1. 程式人生 > >@Entity 和 @Table

@Entity 和 @Table

Java Persistence API定義了一種定義,可以將常規的普通Java物件(有時被稱作POJO)對映到資料庫。
這些普通Java物件被稱作Entity Bean。
除了是用Java Persistence元資料將其對映到資料庫外,Entity Bean與其他Java類沒有任何區別。
事實上,建立一個Entity Bean物件相當於新建一條記錄,刪除一個Entity Bean會同時從資料庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和資料庫同步。

Java Persistence API還定義了一種查詢語言(JPQL),具有與SQL相類似的特徵,只不過做了裁減,以便處理Java物件而非原始的關係表。

注意:在Hibernate中也有@Entity和Table這兩個註解,但是其中@Entity註解已經廢棄,所以本文只分析JPA下的註解

解釋:

  @Entity 表明該類 (UserEntity) 為一個實體類,它預設對應資料庫中的表名是user_entity。這裡也可以寫成

      @Entity(name = "xwj_user")

      或者

      @Entity
      @Table(name = "xwj_user", schema = "test")

      檢視@Entity註解,發現其只有一個屬性name,表示其所對應的資料庫中的表名

 

  @Table 當實體類與其對映的資料庫表名不同名時需要使用 @Table註解說明,該標註與 @Entity 註解並列使用,置於實體類宣告語句之前,可寫於單獨語          句行,也可與宣告語句同行。 
      @Table註解的常用選項是 name,用於指明資料庫的表名 
      @Table註解還有兩個選項 catalog 和 schema 用於設定表所屬的資料庫目錄或模式,通常為資料庫名

 

如果預設@Table註解,則class欄位名即表中的欄位名,所以需要@Column註解來改變class中欄位名與db中表的欄位名的對映規則

@Column註釋定義了將成員屬性對映到關係表中的哪一列和該列的結構資訊,屬性如下:
  1)name:對映的列名。如:對映tbl_user表的name列,可以在name屬性的上面或getName方法上面加入;
  2)unique:是否唯一;
  3)nullable:是否允許為空;
  4)length:對於字元型列,length屬性指定列的最大字元長度;
  5)insertable:是否允許插入;
  6)updatetable:是否允許更新;
  7)columnDefinition:定義建表時建立此列的DDL;
  8)secondaryTable:從表名。如果此列不建在主表上(預設是主表),該屬性定義該列所在從表的名字

 

如果是主鍵id,還會用到@Id註解

@Id註釋指定表的主鍵,它可以有多種生成方式:
  1)TABLE:容器指定用底層的資料表確保唯一;
  2)SEQUENCE:使用資料庫德SEQUENCE列萊保證唯一(Oracle資料庫通過序列來生成唯一ID);
  3)IDENTITY:使用資料庫的IDENTITY列萊保證唯一;
  4)AUTO:由容器挑選一個合適的方式來保證唯一;
  5)NONE:容器不負責主鍵的生成,由程式來完成。

其中與@Id一起使用的還有另外兩個註解:@GeneratedValue、@GenericGenerator,具體使用方法可參考hibernate中的@GeneratedValue與@GenericGenerator

 

引用自 :

僅此而已-遠方

https://www.cnblogs.com/xuwenjin/p/8830850.html