java - MyBatis 是否有类似于 Hibernate 中的 "dirty checking mechanism"?

标签 java hibernate jpa mybatis spring-mybatis

Hibernate 有一个 dirty-checking mechanism它可以自动检测更改并生成适当的UPDATE查询。

MyBatis 是否存在类似的东西?

我知道 MyBatis 中的 Java 实体和数据库表之间没有任何一对一的映射,但我们确实指定了 resultMap。 MyBatis 中是否有任何方法可以智能地计算对象的差异并触发适当的 UPDATE 查询,而无需开发人员显式编写它们?

最佳答案

不,mybatis 不支持这个。 mybatis中没有查询生成。 mybatis 是一个可以帮助您更轻松地执行 SQL 并将结果从 JDBC 映射到对象的工具。

正如您所注意到的,mybatis 不会将表映射到实体,而是将结果集映射到对象。

Mybatis 不维护任何类型的持久上下文,因此它不会跟踪其返回的对象的任何更改(这些对象甚至不需要具有任何标识符或用户定义的类型)。

您可能还想检查this question及其答案,详细介绍了差异,并提供了有关 mybatis 不支持此功能的原因的更多见解。

关于java - MyBatis 是否有类似于 Hibernate 中的 "dirty checking mechanism"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948560/

相关文章:

java - 无法调用java中的函数

java - 使用 Hibernate 将下拉列表值保存到 Struts 2 中的数据库

hibernate - 在 SLSB 中使用 EJB3 和实体管理器处理 ConstraintViolationException 的最佳方法是什么

java - 如何在线托管使用 jpa toplink、tomcat7 mysql 和 primefaces 创建的 java web 动态项目

java - 从 Java 生成 Antlr4 Lexer

java - HQL diff 2 以天为单位的日期

java - JPA:如何更改主键中列的顺序

java - 如何在Hibernate中添加数据库更改的监听器?

java - JPA Merge 和 Remove 不会同时级联到子对象

java - JPA:映射交叉的 OneToOne 和 ManyToOne 关系