Hibernate的annotation

@Controller控制器
@Conponent  組件
@Repository  Dao訪問層
@Entity 實體
@Table 實體mapping表
@Column 屬性mapping列   ---->  不須要Mapping的時候用@Transient
@Id mapping主鍵屬性,能夠將Entity中的某個屬性標識爲標識符(identifier)。可經過應用自身建立,也能夠由Hibernate生成。
@Genarated value 標識符的生產策略。

*AUTO        能夠是一下三種任意一種類型,取決於地層數據庫的不一樣java

*TABLE       使用表保存idweb

*IDENTITY    identity column數據庫

*SEQUENCE   sequence

@Id

@GeneratedValue(strategy = GenerationType.IDENTITy)

Public Integer getId() {… …}

@Id 

@GeneratedValue(generator = "system-uuid")[該屬性名自定義]

@GenericGenerator(name = " system-uuid ", strategy = "uuid")

[name可自定義,可是strategy屬性必須是Hibernate中有效的主鍵策略]

@Column (name = "user_id")

 private Integer userId;

@Id 

@GeneratedValue(generator = "hilo")

@GenericGenerator(name = "hilo", strategy = "hilo")

@Column (name = "user_id")

private Integer userId;

註釋分爲兩類,分別是Logical mapping和Physical mapping,經過Logical mapping可用描述對象模型,類之間的關係等等,而Physical mapping註釋則描述了物理的schema,表,列,索引等等。緩存


mappedBy值對應@OneToOne或@ManyToOne標註的屬性值,至關於inverse=true,指定不須要維護關係的一端。併發

好比校長不須要記住每一個人的名字,每一個人來記校長的名字。由多的一端來維護。app

多對多關聯:ide

經過@ManyToMany註解可定義多對多關聯。同時,也須要經過註解@JoinTable描述關聯表和關聯條件。對於雙向關聯,其中一端必須定義爲owner,另外一端必須定義爲inverse(在對關聯表進行更性操做時這一端將被忽略)。被關聯端沒必要也不能描述物理映射,只須要一個簡單的mappedBy參數,該參數包含了主體端的屬性名,這樣就綁定了雙方的關係。 fetch

功能說明:
@ManyToMany註解
     targetEntity屬性:指向被關聯端的實體對象
     cascade屬性:與Hibernate xml配置文件中的意思同樣,這裏選用兩種方式
            CascadeType.PERSIST:若實體是處於被管理狀態,或當persist()方法被調用時,觸發級聯建立(create)操做。   
            CascadeType.MERGE:若實體是處於被管理狀態,或當merge)方法被調用時,觸發級聯合並(merge)操做。
             其它屬性如CascadeType.REMOVE、CascadeType.REFRESH、CascadeType.ALL等屬性可參考Hibernate Annotations Reference。
     fetch屬性:關聯關係獲取方式
               LAZY(默認值)在第一次訪問關聯對象時才觸發相應的查詢操做。
               另外一個值EAGER是經過out join select直接獲取關聯對象
     
@JoinTable註解
     name屬性:指定關聯表名 若不指定Hibernate能夠根據既定的規則自動生成(具體規則見reference)
     joinColumns屬性:指定主體端的外鍵
     inverseJoinColumns屬性:指定被關聯端的外鍵ui

@Cache註解
     usage屬性:給定了緩存的併發策略spa

@ManyToMany註解
     mappedBy屬性:指定了主體端的屬性名,用以綁定雙方的關係    

相關文章
相關標籤/搜索