我有一个使用Spring NamedJDBCTemplate
的Web应用程序,所有对数据库的调用都是select语句。
在这种情况下,我应该在我的服务类中使用@Transactional
来调用DAO类,该类会将select语句激发到DB。
根据Transaction statergies,清单10建议不要使用@Transactional
进行读取。我是否会通过使用@Transactional
带来开销,而且我也不想错过AOP建议我将来可以引入@Transactional
。
答案 0 :(得分:3)
是的,您应该始终从事务内部访问数据库。不这样做实际上会为每个select语句创建一个事务。
事务不仅对更新的原子性有用。它们还提供隔离保证。例如,(取决于隔离级别)在单个事务中两次读取同一行可以返回相同的数据,从而确保读取数据中没有不一致。使用多个交易进行此操作不会提供任何此类保证。