Spring Data JPA 介紹
JPA 是 Java Persistence API 的簡稱,中文名為 Java 持久層 API。
可以理解為 JPA 規范的再次封裝抽象,底層還是使用了 Hibernate 的 JPA 技術實現,引用 JPQL(Java Persistence Query Language)查詢語言,屬於 Spring 整個生態體系的一部分。
簡單示例
1. 導入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 使用嵌入式 H2 數據庫 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
2、創建實體類
@Data
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String reader;
private String isbn;
private String title;
private String author;
private String description;
}
注解 @Data 出自依賴 lombok ,它會自動生成 setting/getting 方法。
@Entity 注解表明它是一個 JPA 實體,id 屬性加了 @Id 和 @GeneratedValue 注解,說明這個字段是實體的唯一標識,並且這個字段的值是自動生成的。
3、定義倉庫接口
package com.example.readinglist.data;
import com.example.readinglist.bean.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author 愛吃西瓜的番茄醬
* @version 1.0
* @date 2020/10/8 14:49
*
* Spring Data Jpa 提供了很神奇的魔法,
* 只需定義倉庫接口,在應用程序啟動后,
* 該接口在運行時會自動實現。
*/
public interface ReadingListRepository extends JpaRepository<Book, Long> {
/**
* 根據讀者的用戶名來查找閱讀列表。
* @param reader
* @return
*/
List<Book> findByReader(String reader);
}
通過擴展 JpaRepository, ReadingListRepository 直接繼承了18個執行常用持久化操作的方法。
JpaRepository 是個泛型接口,有兩個參數:倉庫操作的領域對象類型,及其ID屬性的類型。
此外,我還增加了一個 findByReader() 方法,可以根據讀者的用戶名來查找閱讀列表。
我們不需要定義 ReadingListRepository 接口的實現類。Spring Data 提供了很神奇的魔法,只需定義倉庫接口,在應用程序啟動后,該接口在運行時會自動實現。
4、使用 Spring MVC 創建 Web 界面
5、創建邏輯視圖,就是 HTML 文件
基本的 Spring Data JPA 操作如上所示。
參考資料
《Spring Boot 實戰》
每天學習一點點,每天進步一點點。