弹簧& JDBC 事务:如何确保 DAO 对象中的隔离级别可串行化?

发布于 2024-11-02 21:21:17 字数 199 浏览 1 评论 0原文

正如典型的那样,事务是在服务级别定义的。

但有时我们的 DAO 方法需要更高的、可串行化的隔离级别。

但是,是否需要 SERIALIZABLE 隔离级别的知识封装在 DAO 方法中,服务方法不需要知道这一点。

如何在 DAO 方法级别强制执行 SERIALIZABLE 隔离级别?我什至找不到一种方法来识别 Spring 中的隔离级别。

Transactions are defined at the service level, as is typical.

But upon occasion we have a DAO method which requires a higher, SERIALIZABLE, isolation level.

But knowledge of whether the SERIALIZABLE isolation level is necessary is encapsulated in the DAO method, the service method need not know about this.

How can I enforce SERIALIZABLE isolation level at the DAO method level? I can't even find a way to identify what the isolation level is in Spring.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弃爱 2024-11-09 21:21:17

服务层通常定义事务语义。

但是...您可以添加 下面的注释在DAO实现方法上实现可序列化隔离级别,以达到效果:

@Transactional(isolation=Isolation.SERIALIZABLE,propagation=Propagation.MANDATORY)

MANDATORY是这样DAO方法在不存在事务的情况下不会创建事务。这将强制所有调用从服务方法开始。如果需要,您可以更改它。

让我知道结果如何。

The service layer typically defines the transactional semantics.

But ... you can add the following annotation to achieve the serializable isolation level on the DAO implemenation method to achieve the effect:

@Transactional(isolation=Isolation.SERIALIZABLE,propagation=Propagation.MANDATORY)

The MANDATORY is so that the DAO method will not create a transaction if none exists. This will force all invocations to start from a service method. You can change that if desired.

Let me know how it works out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文