Web应用程序 - 在哪里放置hibernate.cfg.xml文件?

时间:2013-01-03 16:09:05

标签: java hibernate hibernate.cfg.xml

我正在编写一个Web应用程序,我必须添加hibernate。我配置了maven(pom.xml)等,但现在我收到以下错误:

exception
javax.servlet.ServletException: org.hibernate.HibernateException: /hibernate.cfg.xml not found

我正在使用NetBeans。我尝试将此文件移动到WEB-INF,根项目文件夹,src目录(默认包)但它仍然无法正常工作。我能怎么做?我不想像以下那样以编程方式设置此文件的路径:

Configuration cfg = new Configuration();
cfg.addResource("/some/path/to/this/file/Hibernate.cfg.xml");

4 个答案:

答案 0 :(得分:7)

我总是将它放入WEB-INF/classes目录(编译文件存储在那里)。

答案 1 :(得分:3)

您需要将hibernate.cfg.xml添加到类路径中的文件夹中。在webb应用程序中,默认情况下WEB-INF / classes位于类路径中。您可以使用该文件夹或为您的资源创建一个新文件夹(假设您要将它们分开),然后通过调整项目设置在类路径中设置新文件夹。

答案 2 :(得分:1)

您可以使用带有hibernateConfig File参数的configure(File configFile)方法从其他目录(不一定是类路径)加载hibernate.cfg.xml。 (注意,我正在使用hibernate 4.3.7)

优点是,您可以将hibernate configs文件放在一个单独的目录中,您可以访问该目录(用于维护或更改),而不是将它与.war文件捆绑在一起,您可能无法访问该文件。

示例如下:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml";
File hibernatePropsFile = new File(hibernatePropsFilePath);

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile);

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

答案 3 :(得分:0)

此文件必须位于应用程序的类路径的根目录中。那是在WEB-INF / classes