java - Hibernate DAO/SessionFactory 使用

标签 java spring hibernate

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

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

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

最佳答案

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

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

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

关于java - Hibernate DAO/SessionFactory 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143843/

相关文章:

java - Spring Security HTTP POSTMAN - 登录 - 状态 405 - 不允许方法

java - 如何在提交之前将 hibernate 查询从插入更改为更新

hibernate - 在 Hibernate 中查询复合表

java - JFileChooser 在选择项目之前调用文件资源管理器两次

java - 如何确保我的 HttpClient 4.1 不泄漏套接字?

java - Spring bean 测试

java - 使用 Micrometer 设置 InfluxDB 指标的常见标签

java - JPA脚本生成重复语句

java - 我必须实现 Java Media Framework 接口(interface)吗?

java - 如何在 JavaScript 中读取 XML 服务器响应?