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

7

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

它应该位于类路径的根目录。 - Dave Newton
顺便问一下:我怎么检查类路径? - Quak
“check classpath” 是什么意思? - Dave Newton
哦,我的错误,应该是“我如何检查类路径的根目录?” - Quak
对于一个Web应用程序,您不必这样做,它是由Servlet规范定义的,并且是WEB-INF / classes - Dave Newton
4个回答

8
我通常将它放在 WEB-INF/classes 目录中(编译后的文件存储在此处)。

谢谢,我在WEB-INF中创建了classes目录,现在它可以正常工作了。 - Quak
1
很奇怪你需要“创建”那个目录。你至少有一个类需要放在那里!我想你在这里没有正确使用Netbeans,但我只能猜测。 - Gimby
2
@user1946059 看起来这个答案是你在寻找的 -- 你应该接受它。 - ach

3

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


1
您可以使用接受hibernateConfig文件参数的configure(File configFile)方法从不同目录(不一定是类路径)加载hibernate.cfg.xml。 (注意,我正在使用hibernate 4.3.7)
优点是,您可以将Hibernate配置文件放置在一个单独的目录中,您可以访问该目录以进行维护或更改,而不必将其与.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);


0

该文件必须位于应用程序类路径的根目录下。也就是 WEB-INF/classes 目录下。


文件不一定需要在你的类路径中。请参见:https://dev59.com/PGzXa4cB1Zd3GeqPXcRT#27666320 - Arthur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接