我已经在谷歌上搜索了几个小时,试图找到一个示例,说明如何在使用 DAO 接口时编写不使用 Springs Hibernate 模板的服务方法。让我感到困惑的是,当我将@Transactional注释放在服务层而不是 DAO 时会发生什么。服务方法/DAO 接口是否可以互换?
谢谢你的帮助!
我已经在谷歌上搜索了几个小时,试图找到一个示例,说明如何在使用 DAO 接口时编写不使用 Springs Hibernate 模板的服务方法。让我感到困惑的是,当我将@Transactional注释放在服务层而不是 DAO 时会发生什么。服务方法/DAO 接口是否可以互换?
谢谢你的帮助!
Spring 文档建议完全避免使用HibernateTemplate,而直接使用 Hibernate API:
注意:从 Hibernate 3.0.1 开始,事务性 Hibernate 访问代码也可以用普通的 Hibernate 样式编码。因此,对于新开始的项目,请考虑采用基于 SessionFactory.getCurrentSession() 的标准 Hibernate3 编码数据访问对象的风格。
并且@Transactional
注释应该始终放在服务层的方法上。这是划分事务的层。
阅读http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#orm-session-factory-setup了解如何设置会话工厂. 完成后,可以将会话工厂注入您的 DAO:
@Repository
public class MyDAO {
@Autowired
private SessionFactory sessionFactory;
...
}