我刚看到两个不同的项目。
在其中一个试图从没有@Transactional
注释的方法中持久保存实体时,有一个异常表示:No session found
另一方
即使没有@Transactional
注释,save
方法也允许保存。
PS - 一个项目使用Spring + Hibernate(session not found
例外),另一个项目使用Spring + JPA + Spring Data存储库(允许保存而不进行事务注释)
任何想法为什么会有差异?什么是最佳做法?
答案 0 :(得分:1)
那是因为,Spring Data JPA的the documentation表示
默认情况下,存储库实例上的CRUD方法是事务性的。对于读取操作,事务配置readOnly标志设置为true,所有其他配置使用普通@Transactional,以便应用默认事务配置。有关详细信息,请参阅JavaDoc of Repository。