java - spring-data-jdbc 是如何补充 MyBatis 的?
问题描述
我想了解为什么 spring-data-jdbc 提供与 MyBatis 的集成。
- 它在解决什么问题?
- spring-data-jdbc 如何补充 MyBatis。
- 这只是使映射器符合存储库的问题还是超出了这个范围。
- 当我只能使用 Mappers 时,为什么我要结合使用 MyBatis 和 spring-data-jdbc。
解决方案
简而言之,为提供 JDBC API 的商店spring-data-jdbc
提供了域驱动设计存储库实现。它试图在概念上非常简单(特别是如果你将它与 JPA 进行比较)。并且在某种意义上类似于 mybatis,它不尝试引入隐藏 ORM 复杂性的抽象。
这是文档中的引用spring-data-jdbc
:
- 如果您加载一个实体,SQL 语句就会被执行。完成此操作后,您将拥有一个完全加载的实体。没有延迟加载或缓存。
- 如果你保存一个实体,它就会被保存。如果你不这样做,它就不会。没有脏跟踪,也没有会话。
- 有一个如何将实体映射到表的简单模型。它可能只适用于相当简单的情况。如果您不喜欢这样,您应该编写自己的策略。Spring Data JDBC 仅对使用注释自定义策略提供非常有限的支持。
spring-data-jdbc
不用mybatis也可以使用。查询要么是自己实现的 CRUD 查询,要么是使用注释spring-data-jdbc
指定的自定义查询。@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
允许以相当低的价格相当优雅地解决这个问题。
推荐阅读
- node.js - 错误:无法连接到 MongoDB。您确定您配置的 Mongo 实例正在运行吗?扬帆时
- api - Trello OAuth 仅适用于一个 Google Apps 脚本
- java - 通过 kafka 在 zipkin 中传递数据的问题 - 无法转换消息
- javascript - 同时使用“onClick”和“onDoubleClick”事件监听器反应组件
- ruby-on-rails - 更智能的 CSV 忽略 csv 中的空白行
- javascript - 如何使用 Jquery 获取每个表的每个 tr 中每个 td 的文本?
- go - 无法编码 json.decoded 请求正文
- css - 在 mixin 中修改 Bootstrap 变量
- angular - 如何在 Angular 中使用 Observable 获取多个页面?
- javascript - Azure忘记密码链接出现错误我如何重新喜欢它