事务性注释不同的行为

时间:2013-12-03 14:09:51

标签: java spring hibernate jpa transactional

我刚看到两个不同的项目。

在其中一个试图从没有@Transactional注释的方法中持久保存实体时,有一个异常表示:No session found

另一方

即使没有@Transactional注释,save方法也允许保存。

PS - 一个项目使用Spring + Hibernate(session not found例外),另一个项目使用Spring + JPA + Spring Data存储库(允许保存而不进行事务注释)

任何想法为什么会有差异?什么是最佳做法?

1 个答案:

答案 0 :(得分:1)

那是因为,Spring Data JPA的the documentation表示

  

默认情况下,存储库实例上的CRUD方法是事务性的。对于读取操作,事务配置readOnly标志设置为true,所有其他配置使用普通@Transactional,以便应用默认事务配置。有关详细信息,请参阅JavaDoc of Repository。