在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="">
我们可以在哪种情况下使用它?
答案 0 :(得分:7)
假设,您必须在项目中连接到两个不同的数据库,因此您有两个数据源和两个会话工厂。因此,它们的名称可以帮助您轻松地管理它们(会话工厂)。
Multiple datasource, Multiple session factories
示例:从两个独立的数据中注入两个会话工厂 来源。
@Component
public class TestConfig {
@Autowired
@Qualifier(value="firstSessionFactory")
private SessionFactory sessionFactory;
@Autowired
@Qualifier(value="secondSessionFactory")
private SessionFactory secondDBSessionFactory;
//...
}
答案 1 :(得分:1)
您可以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"/>
答案 2 :(得分:1)
当我们必须连接多个数据库时,我们必须为其创建多个会话工厂来创建多个数据源
@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;
}