Hibernate DAO / SessionFactory使用

时间:2013-02-28 19:17:20

标签: java spring hibernate

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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