簡述
說JPA或許有些道友沒太大影響,很多都喜歡用mybatis或者M-P,但一說hibernate,估計大家伙都腦子一靈光了,其實JPA底層也是hibernate的一種,操作跟hibernate基本一樣,當然作為spring全家桶的一員,肯定也是做了一些特有的封裝。
JPA跟hibernate一樣,都可以通過建實體類來自動創建數據庫的表,但是,我們日常開發中常常會有這樣想法,例如A、B兩張表,B表擁有A表的所有屬性,這時就想數據表能各自用各自的所有字段,但實體類A獨立,實體類B在繼承A類后只需再附加額外的屬性即可,要想實現這種效果,我需要用到jakarta.persistence-api中的@Inheritance注解。此文利用H2數據庫作練習,下面看圖實踐:
實踐
新建兩個實體類,Child、Parent,并且Child簡單繼承Parent。
@Entity
@Table(name = "t_parent")
@Data
public class Parent {
@Id
@Column(name = "class_id")
private String classID;
@Column(name = "class_name")
private String className;
@Column(name = "class_type")
private String classType;
}
@Entity
@Table(name = "t_child")
@Data
public class Child extends Parent{
@Column
private String level;
}
啟動項目看SQL打印:
繼承未成功
只創建了t_parent,并直接使用了子類的屬性;
下面給Parent實體類加上注解 @Inheritance:
效果:
實現成功
ps:strategy的值一定是
InheritanceType.TABLE_PER_CLASS 哦,不然達不到效果!!!