我应该在Service类上使用@Transactional吗?

时间:2015-04-22 06:19:16

标签: java spring transactions spring-jdbc spring-transactions

我有一个使用Spring NamedJDBCTemplate的Web应用程序,所有对数据库的调用都是select语句。

在这种情况下,我应该在我的服务类中使用@Transactional来调用DAO类,该类会将select语句激发到DB。

根据Transaction statergies,清单10建议不要使用@Transactional进行读取。我是否会通过使用@Transactional带来开销,而且我也不想错过AOP建议我将来可以引入@Transactional

1 个答案:

答案 0 :(得分:3)

是的,您应该始终从事务内部访问数据库。不这样做实际上会为每个select语句创建一个事务。

事务不仅对更新的原子性有用。它们还提供隔离保证。例如,(取决于隔离级别)在单个事务中两次读取同一行可以返回相同的数据,从而确保读取数据中没有不一致。使用多个交易进行此操作不会提供任何此类保证。