0

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

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

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

4

1 回答 1

3

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

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

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

于 2013-02-28T19:19:01.240 回答