0

我已经在谷歌上搜索了几个小时,试图找到一个示例,说明如何在使用 DAO 接口时编写不使用 Springs Hibernate 模板的服务方法。让我感到困惑的是,当我将@Transactional注释放在服务层而不是 DAO 时会发生什么。服务方法/DAO 接口是否可以互换?

这是一个@Transactional在 DAO 中的示例

这是服务层中的@Transactional,但使用休眠模板

谢谢你的帮助!

4

1 回答 1

2

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;

    ...
}
于 2012-04-13T14:49:21.663 回答