MyBatis 有没有类似Hibernate 的"dirty checking mechanism"?
Is there an "dirty checking mechanism" for MyBatis similar to that in Hibernate?
Hibernate 有一个 dirty-checking mechanism 可以自动检测更改并生成适当的 UPDATE
查询。
MyBatis有没有类似的东西?
我知道在 MyBatis 中 Java-Entity 和 DB-table 之间没有任何一对一的映射,但我们确实指定了 resultMap
s。 MyBatis 中有没有什么方法可以智能地计算对象的差异并触发适当的 UPDATE
查询,而无需开发人员显式编写它们?
不行,mybatis不支持这个。 mybatis 中没有查询生成。 mybatis 是一个工具,可以帮助您更轻松地执行 SQL 并将结果从 JDBC 映射到对象。
正如您所注意到的,mybatis 不会将表映射到实体,而是将结果集映射到对象。
Mybatis 不维护任何类型的持久性上下文,因此它不跟踪对对象的任何更改 returns(这些对象甚至不需要任何标识符或用户定义的类型)。
您可能还想查看 this question 及其答案,其中更详细地介绍了差异,并提供了有关 mybatis 不支持此功能的原因的更多见解。
Hibernate 有一个 dirty-checking mechanism 可以自动检测更改并生成适当的 UPDATE
查询。
MyBatis有没有类似的东西?
我知道在 MyBatis 中 Java-Entity 和 DB-table 之间没有任何一对一的映射,但我们确实指定了 resultMap
s。 MyBatis 中有没有什么方法可以智能地计算对象的差异并触发适当的 UPDATE
查询,而无需开发人员显式编写它们?
不行,mybatis不支持这个。 mybatis 中没有查询生成。 mybatis 是一个工具,可以帮助您更轻松地执行 SQL 并将结果从 JDBC 映射到对象。
正如您所注意到的,mybatis 不会将表映射到实体,而是将结果集映射到对象。
Mybatis 不维护任何类型的持久性上下文,因此它不跟踪对对象的任何更改 returns(这些对象甚至不需要任何标识符或用户定义的类型)。
您可能还想查看 this question 及其答案,其中更详细地介绍了差异,并提供了有关 mybatis 不支持此功能的原因的更多见解。