事务是在服务级别定义的,这是典型的。
但有时我们有一个 DAO 方法,它需要更高的、可序列化的隔离级别。
但是关于 SERIALIZABLE 隔离级别是否必要的知识被封装在 DAO 方法中,服务方法不需要知道这一点。
如何在 DAO 方法级别强制执行 SERIALIZABLE 隔离级别?我什至找不到一种方法来确定Spring 中的隔离级别是什么。
事务是在服务级别定义的,这是典型的。
但有时我们有一个 DAO 方法,它需要更高的、可序列化的隔离级别。
但是关于 SERIALIZABLE 隔离级别是否必要的知识被封装在 DAO 方法中,服务方法不需要知道这一点。
如何在 DAO 方法级别强制执行 SERIALIZABLE 隔离级别?我什至找不到一种方法来确定Spring 中的隔离级别是什么。
服务层通常定义事务语义。
但是……可以在DAO实现方法上添加如下注解实现可序列化隔离级别,达到效果:
@Transactional(isolation=Isolation.SERIALIZABLE,propagation=Propagation.MANDATORY)
MANDATORY 是为了让 DAO 方法在不存在事务时不会创建事务。这将强制所有调用从服务方法开始。如果需要,您可以更改它。
让我知道它是如何工作的。