繁体   English   中英

spring-data-jdbc 是如何赞美 MyBatis 的?

[英]How is spring-data-jdbc complimenting MyBatis?

我想了解为什么 spring-data-jdbc 提供与 MyBatis 的集成。

  • 它在解决什么问题?
  • spring-data-jdbc 是如何赞美 MyBatis 的。
  • 这只是一个使映射器符合存储库的问题,还是超出了这个问题。
  • 当我可以使用 Mappers 时,为什么要结合使用 MyBatis 和 spring-data-jdbc。

简而言之, spring-data-jdbc为提供 JDBC API 的存储提供了域驱动设计存储库实现。 它试图在概念上非常简单(尤其是将它与 JPA 进行比较时)。 并且在某种意义上与 mybatis 类似,它不会尝试引入隐藏 ORM 复杂性的抽象。

这是spring-data-jdbc文档中的引用:

  • 如果加载实体,则会执行 SQL 语句。 完成此操作后,您将拥有一个完全加载的实体。 没有进行延迟加载或缓存。
  • 如果您保存一个实体,它将被保存。 如果您不这样做,则不会。 没有脏跟踪,也没有会话。
  • 有一个关于如何将实体映射到表的简单模型。 它可能只适用于相当简单的情况。 如果您不喜欢那样,您应该编写自己的策略。 Spring Data JDBC 对使用注解自定义策略提供的支持非常有限。

spring-data-jdbc可以不用mybatis。 这些查询要么是由spring-data-jdbc本身实现的 CRUD 查询,要么是使用@Query注释指定的自定义查询。

它确实提供了与 mybatis 的集成,这允许使用第三种方式来指定查询,即使用具有 mybatis 中所有可用功能的 mybatis 映射器。 这允许创建更复杂的映射,同时仍然使用基于存储库方法名称的自动查询生成来进行简单查询。

有时,即使是简单的 CRUD 操作也需要创建 SQL 查询,这被视为 mybatis 中的一个限制或问题。 spring-data-jdbc允许通过向应用程序引入额外的抽象层(存储库)来解决这个问题。 我说additional因为可以使用 mybatis mapper 作为 DDD 存储库。

确实,如果应用程序有很多 CRUD 操作,将会引入和使用很多非常相似的代码或一些解决方案来制作类似于https://github.com/rickcr/mybatis-generic-crud 的通用 CRUD。

spring-data-jdbc允许以相当低的价格优雅地解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM