我需要将Java Web应用程序的所有设置集中在一个.properties文件中。我仍然可以使用hibernate.cfg.xml向实体类添加映射,但我需要在一个.properties文件中保留数据库和自定义路径的所有设置。
最初我将我的配置保存在hibernate.cfg.xml中,如下所示....
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">my jdbc connection</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="connection.username">user</property>
<property name="connection.password">password</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.current_session_context_class">managed</property>
<mapping class="myEntityClass"/>
</session-factory>
</hibernate-configuration>
现在我想将“connection.url”,“connection.username”和“connection.password”移动到我自己的.properties文件中。创建我的hibernate配置类的代码来自。
new AnnotationConfiguration().configure();
到
new AnnotationConfiguration()
.setProperty("connection.url", databaseUrl)
.setProperty("connection.username", databaseUser)
.setProperty("connection.password", databasePassword)
.configure();
这似乎在概念上很简单。不幸的是,当我尝试使用与先前配置一起使用的Hibernate会话时,我收到以下错误。
用户必须提供JDBC连接
有什么想法吗?在我看来,当Hibernate看到hibernate.cfg.xml文件中缺少这些属性时,它假定将手动添加所有设置并完全忽略xml。
答案 0 :(得分:4)
来自Hibernate参考文档:
3.3. JDBC connections
[...]
以下是一个例子 c3p0的
hibernate.properties
文件:hibernate.connection.driver_class = org.postgresql.Driver hibernate.connection.url = jdbc:postgresql://localhost/mydatabase hibernate.connection.username = myuser hibernate.connection.password = secret hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.timeout=1800 hibernate.c3p0.max_statements=50 hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
根据您的需要调整它,并将hibernate.properties
放在类路径的根目录(并删除hibernate.cfg.xml
中的等效条目,因为XML配置文件会覆盖属性)。因此实际上无需更改以下行:
new AnnotationConfiguration().configure();
除非你真的当然需要程序化配置。
但是从你问题的主体来看,转移到.properties
文件是另一回事,你可以依赖Hibernate:将相关属性从hibernate.cfg.xml
移到{{ 1}}。
答案 1 :(得分:3)
尝试设置以下属性
properties.put("hibernate.connection.driver_class", "net.sourceforge.jtds.jdbc.Driver");
properties.put("hibernate.connection.url", "jdbc:jtds:sqlserver://test/dbname;SSL=REQUEST");
properties.put("hibernate.cconnection.username", "user");
properties.put("hibernate.connection.password", "password");
properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect");
当然这适用于SQL Server,因此您需要将驱动程序更改为'org.gjt.mm.mysql.Driver“' 并改变方言以及'org.hibernate.dialect.MySQLInnoDBDialect'
答案 2 :(得分:0)
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.initialize=true
spring.flyway.baseline-on-migrate=true
flyway.baseline-on-migrate: true
spring.flyway.baselineVersionAsString=2
spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql=true