Udemy Course Spring Framework 44-Spring JPA!

ZONGRU Li
4 min readMar 21, 2019

--

Define Person Entity

首先為了使用JPA,必需先引入Hibernate的ORM機制

先透過一些annotation定義Person這個Entity

基本寫法如下:

  1. @Entity:宣告這個class是一個Entity
  2. @Table:宣告這個Person class對應實際DB的Table名為name=?
  3. @Id:宣告此屬性為對應Table的primary key
  4. @GeneratedValue:宣告此屬性為Table的 sequence,可交由程式自動產生
  5. @Column:宣告此屬性對應Table的什麼欄位name=?

以上,因為class及屬性命名已經對應了實際的Table名與欄位

可以省略為以下

注意上面多建了一個不帶Id的建構子,因為我們有使用@GeneratedValue

可以讓程式自動產生 sequence

接著要建立管理Entity的class,統稱為repository

如下圖,建一個叫PersonJpaRepository於jpa目錄下

基本定義內容如下:

實際寫出來

透過EntityManager的find方法代入Person實例與PK

完成後我們將 DatabaseDemoApplication.java改名為:

SpringJDBCDemoApplication.java以區別JPA,並複製一個用JPA命名

現在要使用JPA的部分,避免Spring scan出問題

暫將JDBC那個@SpringBootApplication註解

並將由SpringJDBCDemoApplication.java複製出來的

JPADemoApplication.java改寫為注入PersonJpaRepository

執行JPADemoApplication.java

WHY?

因為有了以上JPA的設定,Spring會為了我們create Table

所以我們只要INSERT資料就好

所以要把data.sql裡的Person create語法註解,只留INSERT:

再次執行JPADemoApplication.java

執行正常!!

可以再更進一步將jpa組織的SQL呈現出來

輸入:spring.jpa.show-sql=true 於application.properties

再次執行JPADemoApplication.java得:

看起來他會先drop該table再重新建立person table

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet