【问题标题】:What is the use of session-factory name property in hibernate-configuration file休眠配置文件中会话工厂名称属性的用途是什么
【发布时间】:2018-05-06 07:08:42
【问题描述】:
在 hibernate-cfg.xml 文件中,根据我的理解
hibernate-configuration 只能有一个 session-factory 和一个或零个安全标签
如果我们配置多个会话工厂,那么我们应该得到错误
"The content of element type "hibernate-configuration" must match "(session-factory,security?)
谁告诉我
-
hibernate.cfg.xml文件中session-factory标签中的name属性有什么用
<session-factory name="">
我们可以在什么场景下使用它?
【问题讨论】:
标签:
java
hibernate
nhibernate-configuration
【解决方案1】:
假设您必须在项目中连接到两个不同的数据库,因此您有两个数据源和两个会话工厂。因此它们的名称可以帮助您轻松管理它们(会话工厂)。
Multiple datasource, Multiple session factories
示例:从两个独立数据注入两个会话工厂
来源。
@Component
public class TestConfig {
@Autowired
@Qualifier(value="firstSessionFactory")
private SessionFactory sessionFactory;
@Autowired
@Qualifier(value="secondSessionFactory")
private SessionFactory secondDBSessionFactory;
//...
}
【解决方案2】:
你可以reference session factory by name,特别是如果你有多个配置文件,例如:
更改 cfg.xml 文件中的名称
<bean id="transactionManager1" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory1"/>
<!-- ... -->
</bean>
<bean id="transactionManager2" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory2"/>
【解决方案3】:
当我们必须连接多个数据库时,我们必须为我们创建多个会话工厂创建多个数据源
@Component
public class Config {
@Autowired
@Qualifier(value="FirstSessionFactory")
private SessionFactory firstSessionDB;
@Autowired
@Qualifier(value="SecondSessionFactory")
private SessionFactory secondSessionDB;
// for the third database
@Autowired
@Qualifier(value="thirdSessionFactory")
private SessionFactory thirdSessionDB;
}