Java web应用程序-在何处放置hibernate.cfg.xml文件?

Java web应用程序-在何处放置hibernate.cfg.xml文件?,java,hibernate,hibernate.cfg.xml,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目录(默认包),但仍然无法工作。我该怎么办?我不想以编程方式设置此文件的路径,如下

我正在编写一个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");

我总是把它放在
WEB-INF/classes
目录中(编译的文件存储在那里)

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

您可以使用configure(文件configFile)从不同的目录(不一定是类路径)加载hibernate.cfg.xml方法,该方法接受hibernateConfig文件参数。 (注意,am使用hibernate 4.3.7)

优点是,您可以将hibernate配置文件放在一个单独的目录中,该目录是您必须访问的(出于维护或更改目的),而不是将其与您可能无权访问的.war文件捆绑在一起

示例如下:




此文件必须位于应用程序类路径的根目录中。那是在WEB-INF/classes下。它应该在类路径的根目录下。顺便说一下:我怎么能检查类路径?你说的“检查类路径”是什么意思?哦,我的错误,它应该是“我怎么能检查类路径的根目录?”对于一个你不必检查的WEB应用程序,它是由servlet规范定义的,是
WEB-INF/classes
。谢谢,我在WEB-INF中创建了classes目录,它工作得很好。奇怪的是,你不得不创建那个目录。你至少有一门课需要去那里!我认为您在这里没有正确使用Netbeans,但我只能猜测。@user1946059似乎这个答案就是您想要的——您应该接受它。文件不一定需要在类路径中。见:
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);