Spring @Transactional(只读=true)的用途是什么

Spring @Transactional(只读=true)的用途是什么,spring,spring-transactions,Spring,Spring Transactions,我试着查看了几个SO问题和spring文档,但仍然无法理解@Transactionalread only=true的意义 它只能用于只读事务,还是可以用于下面这样的实际读写数据库 @Transactional(readOnly = true, propagation = Propagation.REQUIRED , rollbackFor= {Exception.class}) public void doMultipleOperation(M

我试着查看了几个SO问题和spring文档,但仍然无法理解@Transactionalread 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
}

我发现类似的问题和许多其他问题一样,但我在寻找更通俗的答案

如果将事务设置为readonly=true,则为否,则将无法调用从数据库中创建、更新或删除数据的任何服务方法。这是因为Hibernate会话上的flushMode将设置为NEVER,因此将阻止您对数据进行任何更改。只允许进行选择。

如果将事务设置为readonly=true,则不允许,则将无法调用从数据库创建、更新或删除数据的任何服务方法。这是因为Hibernate会话上的flushMode将设置为NEVER,因此将阻止您对数据进行任何更改。只允许选择。

默认为false,所以只需将@TransactionalJust置于清除位置即可。我将在您的上下文中使用readonly=true only和propagation=propagation.NOT_SUPPORTEDDepends,但您也可以将propagation设置为REQUIRES_NEW,这将仅在只读上下文中创建新事务。但是,我也不知道你是如何使用它的,所以你必须探索所有的选择。看一看:对不起,我听不懂。如果你在我的问题中看我的服务方法,你认为我做得对吗?事实上,这是错误的,所以把@Transactional放在这里只是为了澄清一下。我将在您的上下文中使用readonly=true only和propagation=propagation.NOT_SUPPORTEDDepends,但您也可以将propagation设置为REQUIRES_NEW,这将仅在只读上下文中创建新事务。但是,我也不知道你是如何使用它的,所以你必须探索所有的选择。看一看:对不起,我听不懂。如果你看看我问题中的服务方法,你认为我做得对吗?