hibernate配置文件中session-factory name属性的用途是什么

时间:2017-11-22 13:55:18

标签: java hibernate nhibernate-configuration

在hibernate-cfg.xml文件中,根据我的理解

  

hibernate-configuration只能有一个会话工厂和一个或零个安全标记

如果我们配置多个session-factory,那么我们应该得到错误

"The content of element type "hibernate-configuration" must match "(session-factory,security?)

所以有人告诉我

  1. hibernate.cfg.xml文件中session-factory标记中name属性的用途是什么

    <session-factory name="">
    
  2. 我们可以在哪种情况下使用它?

3 个答案:

答案 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;

}