数据库上的事务只读与 Hibernate 上的事务(readOnly=true)

问题描述 投票:0回答:1

我是一名 Spring 开发人员,我通常使用

@Transactional(readOnly = true)
进行读取操作。我相信这是对Hibernate的提示,但我不知道Hibernate如何将此提示发送到Mysql等数据库。

Mysql 有只读事务,如 https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.html

对于性能:Hibernate 使用此提示来实现休眠级别的性能(脏检查)。

问题:Hibernate 是否将此提示发送到 MySQL?

@Transactional(readOnly = true)
是否意味着 Mysql 上的只读事务?

hibernate transactions
1个回答
0
投票

快速响应:Hibernate 是否将此提示发送到 MySQL?不,

说明:

@transactional(readOnly=true) 意味着spring将阻止你修改数据库(写入,更新,删除..)。 该控制是在 Spring 项目级别实现的(而不是在数据库级别)。

@Transactional 是如何工作的:

@Transactional 利用面向方面编程(AOP)来代理带注释的类或方法。 TransactionInterceptor.classTransactionAspectSupport.class 等方面拦截方法调用并应用指定的控制(例如 readOnly)。

我推荐我在 LinkedIn 上发表的关于事务管理的这篇文章: https://www.linkedin.com/posts/youness-tizi-30517a133_spring-springabrjdbc-transactions-activity-7167899616141651969-ZP-g?utm_source=share&utm_medium=member_desktop

© www.soinside.com 2019 - 2024. All rights reserved.