Spring Boot 2系列教程7 - Spring Data JPA 配置

JPA是什麼?

JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0註解或XML描述實體對象-關係表的映射關係,並將實體對象持久化到數據庫中的一套接口規範。

Spring Boot 2系列教程7 - Spring Data JPA 配置

使用JPA有什麼優勢?

JPA 是 JCP(Java Community Process,是一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新。) 組織發佈的 Java EE 標準之一,因此任何聲稱符合 JPA 標準的框架都遵循同樣的架構,提供相同的訪問API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA框架下運行。

因為JPA是基於非侵入式的設計原則,因此可以很容易的和其他的框架或者容器集成。

基於JPA實現接口規範的最流行的框架之一就是Hibernate。

開始使用JPA

如果想使用JPA需要引用 spring-boot-starter-data-jpa。

引用該依賴後. 會自動加入相關依賴.

Spring Boot 2系列教程7 - Spring Data JPA 配置

主要是以下3個主要的依賴

Hibernate:最受歡迎的JPA實現之一。

Spring Data JPA:使實現基於JPA的操作更加容易。

Spring ORMs:Spring Framework的核心ORM支持。

從開始看到現在, 你已經發現,springboot 就是一個spring套裝合集。而不是什麼新出現的技術。最核心的東西還是使用, 現有的框架進行開發。

想要使用JPA。就需要引用spring-data-jpa。所以,也就是需要spring的基礎框架。學習的方式就變成。用好spring-data-jpa就可以使用springboot。

加入依賴之後, 拷貝上面的項目文件, 進行構建. 效果如下圖.

Spring Boot 2系列教程7 - Spring Data JPA 配置

配置文件.

配置application.properties

怎麼知道配置都有什麼呢? 我們根據springboot的規則,我們先找

Spring Boot 2系列教程7 - Spring Data JPA 配置

並找到jpa的配置。找到一個。

Spring Boot 2系列教程7 - Spring Data JPA 配置

並打開該文件。

Spring Boot 2系列教程7 - Spring Data JPA 配置

你會發現這裡引用了一系列的配置信息. 這裡我們需要注意的是@AutoConfigureAfter 意思是, 我們在這個應用自動配置之後,要應用該自動配置。

然後我們找到HibernateJpaAutoConfiguration

Spring Boot 2系列教程7 - Spring Data JPA 配置

根據框架的名稱可以得知JpaProperties一定是一個配置文件。並且使用了@EnableConfigurationProperties。

Spring Boot 2系列教程7 - Spring Data JPA 配置

打開JPaProperties, 我們可以看到

Spring Boot 2系列教程7 - Spring Data JPA 配置

spring.jpa 就是我們需要在application.properties中進行配置項的前綴.

常用的功能有:

database 選擇一個數據庫類型.

database主要來自: org.springframework.orm.jpa.vendor.Database枚舉對象.

Spring Boot 2系列教程7 - Spring Data JPA 配置

show-sql (showSql) 是否顯示SQL的日誌.

如果使用hibernate就需要使用HibernateProperties

Spring Boot 2系列教程7 - Spring Data JPA 配置

前綴就需要多加上一個hibernate變成 spring.jpa.hibernate

常用的配置有:

ddlAuto(ddl-auto): DDL模式。 這實際上是“hibernate.hbm2ddl.auto”屬性的快捷方式。當使用嵌入式數據庫並且未檢測到任何模式管理器時,默認為“create-drop”。 否則,默認為“none”。

上面就是需要配置jpa的方法. 當然, 除了這些擴展配置, 還需要配置基礎的datasource的配置. 在哪配置呢? 其實剛剛我們已經看到相關的配置了.

看下圖:

Spring Boot 2系列教程7 - Spring Data JPA 配置

這裡在又引用了另外的一個自動配置類. 他在:org.springframework.boot.autoconfigure.jdbc。

Spring Boot 2系列教程7 - Spring Data JPA 配置

這裡就加載了DataSourceProperties的配置信息. spring.datasource

Spring Boot 2系列教程7 - Spring Data JPA 配置

並看到我們上節說到的jdbc的配置.

Spring Boot 2系列教程7 - Spring Data JPA 配置

看源代碼的時候, 在不熟悉的時候, 需要把引用的都看一下, 都打開過個眼熟. 對全局有很好的理解效果.

編寫配置信息, 這裡使用了mysql進行做持久化的數據庫層.

Spring Boot 2系列教程7 - Spring Data JPA 配置

spring.thymeleaf.cache=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/test?useUnicode=yes&characterEncoding=UTF-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=xymiao
spring.jpa.database = MYSQL
spring.jpa.show-sql = true

配置完成.

加入main函數, 啟動項目 : com.jkyuntu.springboot2.JPASpringBootApplication

Spring Boot 2系列教程7 - Spring Data JPA 配置

正常情況下, 現在執行, 如果沒有出現錯誤, 就說明你的基礎環境就運行起來了. 但是為了測試是否真的運行成功, 需要繼續完善代碼.

加入對象實體類. User 使用註解@Entity

Spring Boot 2系列教程7 - Spring Data JPA 配置

有了實體類, 就可以配置dao.

Spring Boot 2系列教程7 - Spring Data JPA 配置

這裡使用CrudRepository 的封裝對象. 看下該接口的源碼.

Spring Boot 2系列教程7 - Spring Data JPA 配置

T為實體類, ID為主鍵類型. 例如: String, Integer

加入service

Spring Boot 2系列教程7 - Spring Data JPA 配置

並實現該類:

Spring Boot 2系列教程7 - Spring Data JPA 配置

這裡使用主鍵的方式進行查詢. 然後在Controller裡面寫入測試代碼. 這裡在開發的時候, 會用到另外的測試方法, 後續會進行詳細講解.

Spring Boot 2系列教程7 - Spring Data JPA 配置

在頁面中加入:

Spring Boot 2系列教程7 - Spring Data JPA 配置

運行項目. 查看效果.

Spring Boot 2系列教程7 - Spring Data JPA 配置

配置和簡單的查詢完成. 接下來會用一個案例首頁輪播效果, 進行演示接下來的開發. 另外開一章了. 關注我. 瞭解更多.

如果有任何的問題, 或者遺漏, 請不吝指出. 一定改正. 共勉.

github地址送上:

https://github.com/xymiao/book-springboot2jingsui


分享到:


相關文章: