簡體   English   中英

spring-jdbc 與 spring-data-jdbc 以及它們支持什么

[英]spring-jdbc vs spring-data-jdbc and what are they supporting

我很好奇 spring-jdbc(我在最新的 spring 版本中缺少的)和 spring-data-jdbc 之間有什么區別。
有區別還是只是重命名(在存儲庫中我沒有看到這個)?

是否在某處描述了版本的支持目標(DB/JDBC 規范/JDK)?

例如,對於來自 oracle 的普通 JDBC,我可以在這里看到該信息: http : //www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#01_03_1
(例如:Oracle DB 12.1/12cR1 上 Java7/Java8 上的 ojdbc7.jar 中的 JDBC Spec 4.1)

但是我想念 spring-jdbc - 我在哪里可以找到這些信息?

spring-jdbc

spring-jdbc的文檔基本上在這里:

https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html

盡管它並沒有特別指出 Spring 項目spring-jdbc 該項目僅提供了可與 Spring 框架一起使用的普通 JDBC DataSource上的所有 Spring 抽象。 例如, Spring 的DataSource很好地掛鈎了 Spring 的事務管理功能,例如@Transactional注釋。 此外, JdbcTemplate是該模塊的一部分,它允許您執行 SQL 語句並從ResultSet提取對象,而無需處理異常處理或正確關閉語句、連接等令人討厭的細節。

spring-data-jdbc

另一方面, spring-data-jdbc提供了spring-jdbc之上的 Spring Data 抽象。 也就是說,您可以創建一個 Spring Data CrudRepository和一個簡單的“實體”(不是 JPA 實體!),並且,正如 Spring Data 所做的那樣,它將為您創建查詢,而無需您通過 JDBC 編寫本機 CRUD 查詢, 如這個例子在spring-data-examples git repo 上

使用引用的示例作為演示:

interface CategoryRepository extends CrudRepository<Category, Long> {}

上面的代碼就是你所需要的(使用對Category對象名稱的自省作為表名的來源(基於NamingStrategy ),它的屬性作為列,再次類似於 JPA,但不使用 JPA

而不是像這樣編寫自己的:

@Repository
public class CategoryRepository {
   public void create(Category category) {
      jdbcTemplate.execute("insert...");
   }

  // The rest of my other CRUD operations
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM