JPA是什麼?
JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0註解或XML描述實體對象-關係表的映射關係,並將實體對象持久化到數據庫中的一套接口規範。
使用JPA有什麼優勢?
JPA 是 JCP(Java Community Process,是一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新。) 組織發佈的 Java EE 標準之一,因此任何聲稱符合 JPA 標準的框架都遵循同樣的架構,提供相同的訪問API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA框架下運行。
因為JPA是基於非侵入式的設計原則,因此可以很容易的和其他的框架或者容器集成。
基於JPA實現接口規範的最流行的框架之一就是Hibernate。
開始使用JPA
如果想使用JPA需要引用 spring-boot-starter-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。
加入依賴之後, 拷貝上面的項目文件, 進行構建. 效果如下圖.
配置文件.
配置application.properties
怎麼知道配置都有什麼呢? 我們根據springboot的規則,我們先找
並找到jpa的配置。找到一個。
並打開該文件。
你會發現這裡引用了一系列的配置信息. 這裡我們需要注意的是@AutoConfigureAfter 意思是, 我們在這個應用自動配置之後,要應用該自動配置。
然後我們找到HibernateJpaAutoConfiguration
根據框架的名稱可以得知JpaProperties一定是一個配置文件。並且使用了@EnableConfigurationProperties。
打開JPaProperties, 我們可以看到
spring.jpa 就是我們需要在application.properties中進行配置項的前綴.
常用的功能有:
database 選擇一個數據庫類型.
database主要來自: org.springframework.orm.jpa.vendor.Database枚舉對象.
show-sql (showSql) 是否顯示SQL的日誌.
如果使用hibernate就需要使用HibernateProperties
前綴就需要多加上一個hibernate變成 spring.jpa.hibernate
常用的配置有:
ddlAuto(ddl-auto): DDL模式。 這實際上是“hibernate.hbm2ddl.auto”屬性的快捷方式。當使用嵌入式數據庫並且未檢測到任何模式管理器時,默認為“create-drop”。 否則,默認為“none”。
上面就是需要配置jpa的方法. 當然, 除了這些擴展配置, 還需要配置基礎的datasource的配置. 在哪配置呢? 其實剛剛我們已經看到相關的配置了.
看下圖:
這裡在又引用了另外的一個自動配置類. 他在:org.springframework.boot.autoconfigure.jdbc。
這裡就加載了DataSourceProperties的配置信息. spring.datasource
並看到我們上節說到的jdbc的配置.
看源代碼的時候, 在不熟悉的時候, 需要把引用的都看一下, 都打開過個眼熟. 對全局有很好的理解效果.
編寫配置信息, 這裡使用了mysql進行做持久化的數據庫層.
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
正常情況下, 現在執行, 如果沒有出現錯誤, 就說明你的基礎環境就運行起來了. 但是為了測試是否真的運行成功, 需要繼續完善代碼.
加入對象實體類. User 使用註解@Entity
有了實體類, 就可以配置dao.
這裡使用CrudRepository 的封裝對象. 看下該接口的源碼.
T為實體類, ID為主鍵類型. 例如: String, Integer
加入service
並實現該類:
這裡使用主鍵的方式進行查詢. 然後在Controller裡面寫入測試代碼. 這裡在開發的時候, 會用到另外的測試方法, 後續會進行詳細講解.
在頁面中加入:
運行項目. 查看效果.
配置和簡單的查詢完成. 接下來會用一個案例首頁輪播效果, 進行演示接下來的開發. 另外開一章了. 關注我. 瞭解更多.
如果有任何的問題, 或者遺漏, 請不吝指出. 一定改正. 共勉.
github地址送上:
https://github.com/xymiao/book-springboot2jingsui