jpa 常用註解

我們會在實體類上使用@Table(name="person") @Entity 這兩個註解,來解釋一下這兩個註解:

@Entity註釋指名這個java類是一個實體類

@Table註釋指定了Entity所要映射帶數據庫表

其中@Table(name="person")用來指定映射表的表名爲person

@Entity和@Table一般一塊使用,如果缺省@Table註釋,系統默認採用實體類名作爲映射表的表名。

實體類的每個實例代表數據表中的一行數據,數據行中的一列對應實例中的一個屬性

 對於屬性行爲我們也常用一些註解來聲明主鍵

@Id

@Id 標註用於聲明一個實體類的屬性映射爲數據庫的主鍵列。 @Id通常標註在getter方法之前。通常與@GeneratedValue配合使用

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

@GeneratedValue

@GeneratedValue 用於標註主鍵的生成策略,通過 strategy 屬性指定。默認情況下,JPA 自動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer 對應 identity,MySQL 對應 auto increment。 在 javax.persistence.GenerationType 中定義了以下幾種可供選擇的策略:

IDENTITY:採用數據庫 ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式;

AUTO: JPA自動選擇合適的策略,是默認選項;

SEQUENCE:通過序列產生主鍵,通過 @SequenceGenerator 註解指定序列名,MySql 不支持這種方式

TABLE:通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於數據庫移植。

@Column

當實體的屬性與其映射的數據庫表的列不同名時需要使用@Column 標註說明該屬性通常置於實體的屬性聲明語句之前,還可與 @Id 標註一起使用。

@Basic

表示一個簡單的屬性到數據庫表的字段的映射,對於沒有任何標註的getXxxx()方法,默認 即爲 @Basic fetch: 表示該屬性的讀取策略,有EAGER和LAZY兩種,分別表示主支抓取和延遲加載,默認爲EAGER.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章