【问题标题】:Hibernate DAO/SessionFactory UseHibernate DAO/SessionFactory 使用
【发布时间】:2013-02-28 19:17:20
【问题描述】:

在我的应用程序中,我有一个 DAO bean,我通过 Spring 使用 Hibernate sessionFactory(配置了 c3p0 连接池)注入它。我的 sessionFactory bean 是这样定义的:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
...
</bean>

在线程环境中使用包装 DAO bean 的最佳做法和/或最佳性能是什么?我应该将它定义为单例 bean 并让它在线程之间共享,同时依赖 sessionFactory 的线程安全性吗?或者我应该为每个线程创建一个单独的 DAO 实例?这还重要吗?

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

    如果您的 DAO 除了 SessionFactory 之外没有任何成员字段,请将每个字段用作传递给所有线程的 Singleton。

    Spring 的一个常见做法是使用 @Repository@Autowired 将实例注释到您的 DAO 实现到您的服务或其他需要使用它的类中。

    SessionFactory#openSession()SessionFactory#getCurrentSession() 分别返回一个新的 Session 实例和一个线程本地 Session,因此不会跨线程共享任何内容。

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2011-05-06
      • 2017-05-04
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2016-02-23
      • 2011-12-28
      • 2019-06-23
      相关资源
      最近更新 更多