java-@Transactional注释是否避免并发访问业务层方法

对于业务/服务层中@Transactional注释的用法,我还不清楚.

我的问题是,与业务层中的ISOLATION_SERIALIZABLE一起使用时,@ Transactional注释是否可以保证不允许对特定方法进行并发访问?

@Transactional(isolation = Isolation.SERIALIZABLE)
public void businessMethod() {

    // calls subBusinessMethod
    subBusinessMethod();
    ---------------
    ---------------
    ---------------

}

想象一下subBusinessMethod调用DAO层来执行一些数据库事务.调用subBusinessMethod之后的代码执行(可能有更多的db调用)取决于subBusinessMethod中发生的db事务的结果.

我需要确保随后对businessMethod的调用不应在不知道先前调用对db表发生什么情况的情况下,调用dao层从数据库进行读/写操作.所需的验证已添加到业务逻辑中.

首先,我的方法有效吗?如果是这样,我是否以正确的方式使用它. ?

解决方法:

否.@ Transactional属性直接映射到数据库级别.该方法可以并且将被同时访问(只有同步或其他锁定才能阻止该方法).

另一方面,基础数据库事务将以可序列化的隔离方式执行,即事务的最终结果必须好像每个事务都接连运行(即使它们并不是真的接连运行).

根据您的要求,这似乎是一种可行的方法.但这可能不是唯一的,甚至不是最好的.

上一篇:java-@Transactional,方法内部的方法


下一篇:高级Redis应用进阶课 一站式Redis解决方案