Spring Data Jpa (五)@Entity實例里面常用注解詳解


詳細介紹javax.persistence下面的Entity中常用的注解。

  雖然Spring Data JPA已經幫我們對數據的操作封裝得很好了,約定大於配置思想,幫我們默認了很多東西。JPA(Java持久性API)是存儲業務實體關聯的實體來源。它顯示了如何定義一個面向普通Java對象(POJO)作為一個實體,以及如何與管理關系實體提供一套標准。因此,javax.persistence下面的有些注解還是必須要去了解的,以便於更好地提高工作效率。

 

1.基本注解

  基本注解包括@Entity、@Table、@Id、@IdClass、@GeneratedValue、@Basic、@Transient、@Column、@Temporal、@Enumerated、@Lob

 

1.1@Entity

  @Entity定義對象將會成為被JPA管理的實體,將映射到指定的數據庫表。

1.2@Table

  @Table指定數據庫的表名。

1.3@Id

  @Id定義屬性為數據庫的主鍵,一個實體里面必須有一個。

1.4@IdClass

  @IdClass利用外部類的聯合主鍵。

  作為符合主鍵類,要滿足以下幾點要求。  

  必須實現Serializable接口。
  必須有默認的public無參數的構造方法。

  必須覆蓋equals和hashCode方法。equals方法用於判斷兩個對象是否相同,EntityManger通過find方法來查找Entity時是根據equals的返回值來判斷的。在本例中,只有對象的name和email值完全相同或同一個對象時才返回true,否則返回false。hashCode方法返回當前對象的哈希碼,生成的hashCode相同的概率越小越好,算法可以進行優化

1.5 @GeneratedValue

  @GeneratedValue為主鍵生成策略

  GenerationType一共有以下4個值:

  

1.6 @Basic

  @Basic表示屬性是到數據庫表的字段的映射。如果實體的字段上沒有任何注解,默認即為@Basic。

1.7 @Transient

  @Transient表示該屬性並非一個到數據庫表的字段的映射,表示非持久化屬性,與@Basic作用相反。JPA映射數據庫的時候忽略它。

1.8 @Column

  @Column定義該屬性對應數據庫中的列名

1.9@Temporal

  @Temporal用來設置Date類型的屬性映射到對應精度的字段。

  (1)@Temporal(TemporalType.DATE)映射為日期∥date(只有日期)

  (2)@Temporal(TemporalType.TIME)映射為日期∥time(只有時間)。

  (3)@Temporal(TemporalType.TIMESTAMP)映射為日期∥datetime(日期+時間)。

1.10@Enumerated

  直接映射enum枚舉類型的字段

  

1.11@Lob

  @Lob 將屬性映射成數據庫支持的大對象類型,支持以下兩種數據庫類型的字段。

  (1)Clob(Character Large Ojects)類型是長字符串類型,java.sql.Clob、Character[]、char[]和String將被映射為Clob類型。

  (2)Blob(Binary Large Objects)類型是字節類型,java.sql.Blob、Byte[]、byte[]和實現了Serializable接口的類型將被映射為Blob類型。

  (3)Clob、Blob占用內存空間較大,一般配合@Basic(fetch=FetchType.LAZY)將其設置為延遲加載。

 

2.關聯關系注解

  關聯關系注解包括@JoinColumn、@OneToOne、@OneToMany、@ManyToOne、@ManyToMany、@JoinTable、@OrderBy。

 

2.1 @JoinColumn定義外鍵關聯的字段名稱

  用法:@JoinColumn主要配合@OneToOne、@ManyToOne、@OneToMany一起使用,單獨使用沒有意義。

  @JoinColumns定義多個字段的關聯關系。

2.2 @OneToOne關聯關系

  用法:@OneToOne需要配合@JoinColumn一起使用。注意:可以雙向關聯,也可以只配置一方,需要視實際需求而定。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM