使用 hibernate.cfg.xml 时更改 hibernate.properties 文件的位置
Posted
技术标签:
【中文标题】使用 hibernate.cfg.xml 时更改 hibernate.properties 文件的位置【英文标题】:Change location of hibernate.properties file while using hibernate.cfg.xml 【发布时间】:2014-07-30 16:08:38 【问题描述】:我们在hibernate.cfg.xml中提供db凭证
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">url</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<session-factory>
<hibernate-configuration>
我们可以在此处提供这些属性,也可以在类路径中的 hibernate.properties 中提供这些属性。但我希望它们来自外部文件。我在 hibernate 中找不到更改默认 hibernate.properties 文件路径的方法。
请帮忙。
[编辑] java中生成sessionFactory对象的方法
public class HibernateUtil
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
// Create the session factory from hibernate.cfg.xml
Configuration configuration = new Configuration();
StandardServiceRegistryBuilder serviceRegistryBuilder =
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
return configuration.buildSessionFactory(serviceRegistryBuilder.build());
public static SessionFactory getSessionFactory()
return sessionFactory;
【问题讨论】:
如何在 Java 代码中调用sessionFactory
?
【参考方案1】:
以编程方式,您可以像这样加载 XML 和属性:
public class MyHibernate
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
try
URL r1 = MyHibernate.class.getResource("/hibernate.cfg.xml");
Configuration c = new Configuration().configure(r1);
try
InputStream is = MyHibernate.class.getResourceAsStream("/hibernate.properties");
Properties props = new Properties();
props.load(is);
c.addProperties(props);
catch (Exception e)
LOG.error("Error reading properties", e);
return c.buildSessionFactory();
catch (Throwable ex)
LOG.error("Error creating SessionFactory", ex);
throw new ExceptionInInitializerError(ex);
public static SessionFactory getSessionFactory()
return sessionFactory;
整个春天
您可以使用 PropertiesFactoryBean 从文件中读取属性并配置您的 LocalSessionFactoryBean:
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="hibernateProperties">
<bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location">path-to-properties-file</property>
</bean>
</property>
...
</bean>
希望有用。
【讨论】:
我不想使用 InputStream 类来加载休眠属性,有没有办法在 spring 中包含这个 感谢帮助,试试这个以上是关于使用 hibernate.cfg.xml 时更改 hibernate.properties 文件的位置的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate----配置文件Hibernate.cfg.xml
用hibernate.properties代替hibernate.cfg.xml配置常用的属性
如何使用 hibernate.properties 文件而不是 hibernate.cfg.xml
Hibernate框架hibernate.cfg.xml配置文件,配置自动生成表结构策略。
如何使用 maven 配置 hibernate-tools 以生成 hibernate.cfg.xml、*.hbm.xml、POJO 和 DAO