JPA, 全稱Java Persistence API,翻譯爲JAVA持久層應用接口,JPA自己並非一個框架,它本質上是一種ORM規範,Hibernate是一個框架,也是JPA的一種實現。
html
剛纔咱們說JPA是JAVA持久層應用接口,那什麼是持久層呢?
Java有三層架構,分別爲持久層,業務層和表現層。
咱們簡稱爲SSH,即Struts(表示層)+Spring(業務層)+Hibernate(持久層)。
Struts是一個表示層框架,進行流程控制,主要做用是頁面展現,發送請求,接受請求,
Spring就是咱們熟知的後端框架,進行業務流轉,
Hibernate是一個持久層框架,它只負責與關係數據庫的操做。
java
咱們原來使用JDBC鏈接來讀寫數據庫,咱們最多見的就是打開數據庫鏈接、使用複雜的SQL語句進行讀寫、關閉鏈接,得到的數據又須要轉換或封裝後往外傳,這是一個很是煩瑣的過程。這時出現了Hibernate框架,它須要你建立一系列的持久化類,每一個類的屬性均可以簡單的看作和一張數據庫表的屬性一一對應。這樣咱們不用在關注數據庫,只須要持久化類就能夠完成增刪改查的功能。使咱們的軟件開發真正面向對象, 而不是面向混亂的代碼。spring
@Entity註釋
持久對象有時稱爲實體。附加@Entity
到類,此類告知JPA應該保留此類及其對象。
具備此註釋的klass
類。數據庫
@Entity public class Klass { ...class body }
@Table註釋
告訴JPA將實體(Klass
類)持久化到Klass
表中。參數name
默認爲實體名稱,所以若是實體名稱與映射的表名稱一致時,@Table
註解經常能夠省略。以下所示。編程
@Entity @Table(name="klass") public class Klass { ...class body }
指定主鍵
咱們使用JPA的@Id
註釋將id
字段指定爲Klass
主鍵。用@GeneratedValue(strategy = GenerationType.IDENTITY)
定義主鍵自增屬性。後端
@Entity public class Klass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; }
定義關係類型
實體(數據表)與實體間的關係分爲如下四種:1對1,1對多,多對1,多對多;在英文中分別是OneToOne、OneToMany、ManyToOne、ManyToMany,在JPA聲明多對一外鍵以下api
@ManyToOne private Teacher teacher;
使用JPA大大簡化了咱們構造數據庫的的過程,也是咱們的過程面向對象,而且在團隊開發中,也使得代碼與本地數據庫一致。Spring Data JPA
也是JPA
,它更簡單、更強大。springboot
什麼是JPA?Java Persistence API簡介
What is JPA? Introduction to the Java Persistence API
Spring Boot2 系列教程(二十三)理解 Spring Data Jpa
java三層架構:持久層、業務層、表現層的理解
第一節 JPA初始化數據表架構