簡體   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