java - 获取文件路径 - Hibernate SessionFactory

标签 java hibernate

我需要为 hibernate 创建一个 session 工厂,但默认情况下它会查找“hibernate.cfg.xml”文件。 我没有创建这个文件。所有的hibernate配置都在Spring MVC配置的“applicationContext.xml”文件中。我需要做的就是向Configuration类的“configure”方法提供“/WEB-INF/applicationContext”文件路径,但我不知道如何在JAVA中找到该文件的相对路径。

        public static SessionFactory createSessionFactory() {
            Configuration configuration = new Configuration();
            configuration.configure(HERE I NEED TO GET "/WEB-INF/applicationContext.xml FILE PATH");
            serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                    configuration.getProperties()).build();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
            return sessionFactory;  }

最佳答案

hibernate 加载/WEB-INF/applicationContext.xml使用ClassLoader.getResourceAsStream("/WEB-INF/applicationContext.xml")

ClassLoader尝试访问类路径根目录中的文件 - 对于 Web 应用程序来说是 war/WEB-INF/classes/ 。你应该输入 applicationContext.xmlwar/WEB-INF/classes/applicationContext.xml并使用加载它

sessionFactory = new Configuration().configure("applicationContext.xml")
  .buildSessionFactory();

您不能指定/WEB-INF/applicationContext.xml ,因为/WEB-INF/不在类路径中。

How Hibernate loads resources

如果你确实想从 /WEB-INF/applicationContext.xml 获取配置你应该得到 URLapplicationContext.xml使用ServletContext : File path to resource in our war/WEB-INF folder?

然后传递URLConfigurationStandardServiceRegistryBuilder ,这取决于 Hibernate 版本。

重要通知

我认为以上毫无意义,因为applicationContext.xml应该具有类似 hibernate.cfg.xml 的结构显然,事实并非如此。

关于java - 获取文件路径 - Hibernate SessionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37304496/

相关文章:

java - 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

java - 使用 JPA 将包括关系在内的整个表加载到内存中

java - 一张表的并发更新和删除

java - Hibernate多态性(扩展父类)

java - hibernate命名查询

java - 使用多边形包含

java - 创建一个 Map<String,List<Integer>>

java - org.springframework.transaction.CannotCreateTransactionException : Could not open Hibernate Session for transaction

java - 为什么插入 ArrayList 后行会重复?

java - 强制转换通用数组的问题