在Hibernate配置文件中,session-factory名称属性有什么用途?

12

在 hibernate.cfg.xml 文件中,根据我的理解,hibernate-configuration 只能包含一个 session-factory 和一个或零个 security 标签。如果我们配置了多个 session-factory,则应该会出现错误:"The content of element type "hibernate-configuration" must match "(session-factory,security?)"。

所以有人能告诉我:

  1. session-factory 标签中的 name 属性在 hibernate.cfg.xml 文件中的作用是什么?
<session-factory name="">
  • 我们在哪种情况下可以使用它?


  • 您的应用程序需要连接多个数据库吗? - Mandar Dharurkar
    3个回答

    7
    假设您的项目中必须连接两个不同的数据库,因此您有两个数据源和两个会话工厂。因此,它们的名称可帮助您轻松管理它们(会话工厂)。
    样例:从两个独立的数据源注入两个会话工厂。
    参考:多数据源,多会话工厂
    @Component
    public class TestConfig {
    
    @Autowired
    @Qualifier(value="firstSessionFactory")
    private SessionFactory sessionFactory;
    
    @Autowired
    @Qualifier(value="secondSessionFactory")
    private SessionFactory secondDBSessionFactory;
    
    //...
    
    }
    

    1
    你可以按名称引用会话工厂,特别是当你有多个配置文件时,例如:

    change the names inside your cfg.xml file

    <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"/>
    

    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;
    
    }
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接