java如何访问hibernate。cfg。xml,config。属性和log4j。来自项目文件夹外部的属性
我想将我的java项目(使用eclipse)导出到可执行jar中, 但是我想要冬眠。cfg。xml,config。属性和log4j。属性可编辑以备将来使用, 那么,如何使hibernate从项目文件夹外部访问该文件,或者以任何其他方式使该文件可编辑以备将来使用
我已经尝试了访问hibernate的代码。cfg。来自项目文件夹外部的xml
SessionFactory sessionFactory = new Configuration().configure("mon/hibernate.cfg.xml").buildSessionFactory();
但我犯了这个错误
mon/hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
还是不知道配置。属性和log4j。属性, 任何帮助都是我的荣幸:)
# 1 楼答案
以下是我对你问题的解决方案:
配置。属性
您可以通过为JVM设置的参数
-DconfigurationFile
来定义配置文件。然后尝试在classpath
(jar内部)中查找confiFile
,如果找不到,则将搜索文件系统。最后,属性将被JVM参数覆盖log4j。属性
解决方案是使用以下JVM参数:
如果文件不在类路径中(对于Tomcat,在WEB-INF/classes中),而是在磁盘上的某个地方,请使用file:,比如
冬眠。cfg。xml
我不知道该怎么做。无论如何,发布后很难配置持久性,因为配置很难绑定到实现。我认为把它放在类路径中是可以的
# 2 楼答案
您可以指示hibernate从文件系统加载配置文件
有很多重载的
configure()
方法可用,请参阅文档链接下面是你可以做的事情:
http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/cfg/Configuration.html#configure(java.io.File)
对于log4j,可以使用log4j配置文件给出-D参数
比如
-Dlog4j.configuration={path to .properties or .xml }
log4j外部化的类似问题:How to initialize log4j properly?
这也值得一读