spring - @Transactional(read-only = true) 的目的是什么

标签 spring spring-transactions

我试着看了几个 SO 问题和 spring 文档,但仍然无法理解 @Transactional(read-only = true) 的意义。

它可以只用于只读事务还是可以用于像下面这样的实际读写数据库的东西

@Transactional(readOnly = true, propagation = Propagation.REQUIRED
                          , rollbackFor= {Exception.class})
public void doMultipleOperation(MyObj obj) throws Exception{
//call delete DAO method
//call insert DAO method
//call select DAO method
}

我发现类似的问题 this和其他多个人,但我正在寻找更多外行术语的答案。

最佳答案

如果您将Transaction设置为readonly = true,那么不可以,您将无法调用任何创建、更新或删除数据库数据的服务方法.这是因为 Hibernate session 上的 flushMode 将设置为 NEVER,因此您将无法对数据进行任何更改。只允许选择。

关于spring - @Transactional(read-only = true) 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49436105/

相关文章:

java - Spring应用程序-在事务结束时运行方法?

java - 在用 spring 的 @Transactional 注释的方法中抛出并捕获未经检查的异常是否仍会导致事务回滚?

java - 即使我提到了 mainClass 属性并且它就在它的 Nose 底下,Spring-boot maven 插件也无法找到 mainClass

java - 浏览器未显示跨源请求的有效响应

java - 升级 spring 依赖项后出现错误 A JTA EntityManager cannot use getTransaction()

java - 如何在插入行之前在 Sybase SQL 中生成 ID

java - @Transactional 在服务中的使用,当方法仅从数据库中获取数据时。

javascript - 使用Spring,我需要将动态数据传入html来构建网页

java - 为什么 Hibernate 会查询两次?

java - JPA @repository @Query 可以处理空实体吗?