编程语言
首页 > 编程语言> > java – 当事务只读取数据时,我应该避免使用注释@Transactional吗?

java – 当事务只读取数据时,我应该避免使用注释@Transactional吗?

作者:互联网

我已经从使用TransactionProxyFactoryBean的旧式事务管理迁移到Spring推荐的Declarative事务管理,以避免出现不时出现的事务的异常.

对于事务保存更新删除我添加了注释:

@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)

它对我有用.

问题是:

Should I avoid using the annotation @Transactional when the transaction only reads data?

例:

public TradeData getTrade(long tradeId) throws Exception {
   return em.find(TradeData.class, tradeId);
}

阅读完this篇文章后说:

“Better yet, just avoid using the @Transactional annotation altogether when doing read operations, as shown in Listing 10:”

我有点困惑,我不太明白.

解决方法:

对于使用JDBC的只读操作,您不需要@Transactional,因为它不需要事务,Hibernate会这样做!所以你可以使用@Transactional(readOnly = true).然后你确定你不会意外更新,删除,插入一些东西.

标签:java,spring,hibernate,transactions,spring-transactions
来源: https://codeday.me/bug/20190717/1489249.html