Spring Data JPA 是 Spring Data 系列的一部分,可輕鬆實現基於 JPA 的儲存庫。此模組處理對基於 JPA 的資料存取層的增強支援。它使得建立使用資料存取技術的 Spring 支援的應用程式變得更加容易。
長期以來,實現應用程式的資料存取層一直很麻煩。必須編寫太多的樣板程式碼來執行簡單的查詢以及執行分頁和稽核。 Spring Data JPA 旨在透過減少實際需要的工作量來大幅改善資料存取層的實作。作為開發人員,您編寫儲存庫接口,包括自訂查找器方法,Spring 將自動提供實作。
JPA 實體的 CRUD 方法的實現
根據查詢方法名稱動態產生查詢
透過查詢方法透明觸發 JPA NamedQueries
提供基本屬性的實作域基類
支援透明審核(創建、最後更改)
整合自訂儲存庫程式碼的可能性
Spring 與自訂命名空間輕鬆集成
該項目受 Spring 行為準則管轄。透過參與,您應該遵守本行為準則。請將不可接受的行為回報至 [email protected]。
以下是在 Java 中使用 Spring Data Repositories 的應用程式的快速預覽:
public interface PersonRepository extends CrudRepository < Person , Long > {
List < Person > findByLastname ( String lastname );
List < Person > findByFirstnameLike ( String firstname );
}
@ Service
public class MyService {
private final PersonRepository repository ;
public MyService ( PersonRepository repository ) {
this . repository = repository ;
}
public void doWork () {
repository . deleteAll ();
Person person = new Person ();
person . setFirstname ( "Oliver" );
person . setLastname ( "Gierke" );
repository . save ( person );
List < Person > lastNameResults = repository . findByLastname ( "Gierke" );
List < Person > firstNameResults = repository . findByFirstnameLike ( "Oli%" );
}
}
@ Configuration
@ EnableJpaRepositories ( "com.acme.repositories" )
class AppConfig {
@ Bean
public DataSource dataSource () {
return new EmbeddedDatabaseBuilder (). setType ( EmbeddedDatabaseType . H2 ). build ();
}
@ Bean
public JpaTransactionManager transactionManager ( EntityManagerFactory emf ) {
return new JpaTransactionManager ( emf );
}
@ Bean
public JpaVendorAdapter jpaVendorAdapter () {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter ();
jpaVendorAdapter . setDatabase ( Database . H2 );
jpaVendorAdapter . setGenerateDdl ( true );
return jpaVendorAdapter ;
}
@ Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory () {
LocalContainerEntityManagerFactoryBean lemfb = new LocalContainerEntityManagerFactoryBean ();
lemfb . setDataSource ( dataSource ());
lemfb . setJpaVendorAdapter ( jpaVendorAdapter ());
lemfb . setPackagesToScan ( "com.acme" );
return lemfb ;
}
}
新增 Maven 依賴:
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}</ version >
</ dependency >
如果您希望獲得即將發布的主要版本的最新快照,請使用我們的 Maven 快照儲存庫並聲明適當的依賴項版本。
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}-SNAPSHOT</ version >
</ dependency >
< repository >
< id >spring-snapshot</ id >
< name >Spring Snapshot Repository</ name >
< url >https://repo.spring.io/snapshot</ url >
</ repository >
Spring Data 遇到問題?我們很樂意提供協助!
檢查參考文件和 Javadocs。
學習 Spring 基礎知識 – Spring Data 基於 Spring Framework 構建,請查看 spring.io 網站以取得大量參考文件。如果您剛開始使用 Spring,請嘗試其中一個指南。
如果您要升級,請查看 Spring Data JPA 發行說明並向下捲動至您正在考慮的版本。請參閱那裡的詳細資訊。 (另請查看最新的穩定版本)
提出問題 - 我們監控 stackoverflow.com 中是否有帶有spring-data-jpa
標籤的問題。您也可以在 Gitter 上與社群聊天。
在 GitHub 問題追蹤器中報告 Spring Data JPA 的錯誤。
Spring Data 使用 GitHub 作為問題追蹤系統來記錄錯誤和功能請求。如果您想提出問題,請遵循以下建議:
在記錄錯誤之前,請搜尋問題追蹤器以查看是否有人已經報告了該問題。
如果該問題尚不存在,請建立一個新問題。
請在問題報告中提供盡可能多的信息,我們想知道您正在使用的 Spring Data 版本和 JVM 版本、完整的堆疊追蹤以及任何相關的配置資訊。
如果您需要貼上程式碼,或包含堆疊追蹤,請使用三個反引號將其格式化為程式碼。
如果可能的話,請嘗試建立一個複製問題的測試案例或專案。附上您的程式碼或包含您的程式碼的壓縮檔案的連結。如果可能,請使用記憶體資料庫或使用測試容器設定資料庫。
您不需要從原始程式碼建置來使用 Spring Data(repo.spring.io 中的二進位檔案),但如果您想嘗試最新且最好的,可以使用 Maven 包裝器輕鬆建置 Spring Data。您還需要 JDK 17 或更高版本。
$ ./mvnw clean install
如果您想使用常規mvn
命令進行構建,則需要 Maven v3.8.0 或更高版本。
如果您希望提交拉取請求,另請參閱 CONTRIBUTING.adoc,特別是請在第一次重要變更之前簽署貢獻者協議。
建置文件也會建置項目,而無需執行測試。
$ ./mvnw clean install -Pantora
產生的文檔可從target/antora/site/index.html
取得。
spring.io 網站包含多個指南,示範如何逐步使用 Spring Data:
使用 JPA 存取資料:了解如何使用 Spring Data JPA 處理 JPA 資料持久性。
使用 REST 存取 JPA 資料是建立 REST Web 服務並透過儲存庫公開使用 JPA 儲存的資料的指南。
Spring Data Examples 包含更詳細地解釋特定功能的範例項目。
Spring Data JPA 是在 Apache 2.0 許可證下發布的開源軟體。