gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:55:41 25 4
gpt4 key购买 nike

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

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

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

    这是来自 spring-data-jdbc 的引述文档:

    • If you load an entity, SQL statements get executed. Once this is done, you have a completely loaded entity. No lazy loading or caching is done.
    • If you save an entity, it gets saved. If you do not, it does not. There is no dirty tracking and no session.
    • There is a simple model of how to map entities to tables. It probably only works for rather simple cases. If you do not like that, you should code your own strategy. Spring Data JDBC offers only very limited support for customizing the strategy with annotations.

    spring-data-jdbc不用mybatis也能用。查询是由 spring-data-jdbc 实现的 CRUD 查询。本身或者是使用 @Query 指定的自定义查询注解。

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

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

    确实,如果应用程序有很多 CRUD 操作,就会有很多非常相似的代码或一些解决方案来使通用 CRUD 类似于 https://github.com/rickcr/mybatis-generic-crud将被介绍和使用。
    spring-data-jdbc允许以相当低的价格相当优雅地解决这个问题。

    关于java - spring-data-jdbc 是如何赞美 MyBatis 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273556/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com