国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate 注解

2019-11-10 17:43:53
字體:
來源:轉載
供稿:網友

Hibernate 注解

本文由Hibernate注解版關聯關系映射全解析+案例修改而來. 1、@Entity(name=”EntityName”) 必須,name為可選,對應數據庫中一的個表,此處的EntryName要注意,在代碼中使用hql進行查詢時,需要from Xxx,那么Xxx就是對應的此處的EntryName,所以要注意EntryName的命名,否則會出現映射問題。 2、@Table(name=”“,catalog=”“,schema=”“) 可選,通常和@Entity配合使用,只能標注在實體的class定義處,表示實體對應的數據庫表的信息

name:可選,表示表的名稱。默認地,表名和實體名稱一致,只有在不一致的情況下才需要指定表名 catalog:可選,表示Catalog名稱。默認為Catalog(“”) schema:可選,表示Schema名稱。默認為Schema(“”)

3、@id 必須

@id定義了映射到數據庫表的主鍵的屬性,一個實體只能有一個屬性被映射為主鍵。置于getXxxx()前

4、@GeneratedValue(strategy=GenerationType,generator=”“) 可選

strategy:表示主鍵生成策略,有AUTO、INDENTITY、SEQUENCE和 TABLE 4種,分別表示讓ORM框架自動選擇、根據數據庫的Identity字段生成、根據數據庫表的Sequence字段生成、以及根據一個額外的表生成主鍵。默認為AUTO

generator:表示主鍵生成器的名稱,這個屬性通常和ORM框架相關。例如,Hibernate可以指定uuid等主鍵生成方式

示例:

@Id @GeneratedValues(strategy=StrategyType.SEQUENCE) public int getPk() { return pk; }

5、@Basic(fetch=FetchType,optional=true) 可選

@Basic表示一個簡單的屬性到數據庫表的字段的映射,對于沒有任何標注的getXxxx()方法。默認即為@Basic

fetch:表示該屬性的讀取策略,有EAGER和LAZY兩種,分別表示主支抓取和延遲加載。默認為EAGER optional:表示該屬性是否允許為null,默認為true 示例:

@Basic(optional=false) public String getAddress() { return address; }

6、@Column 可選

@Column描述了數據庫表中該字段的詳細定義,這對于根據JPA注解生成數據庫表結構的工具非常有作用 name:表示數據庫表中該字段的名稱。默認情形屬性名稱一致 nullable:表示該字段是否允許為null。默認為true unique:表示該字段是否是唯一標識。默認為false length:表示該字段的大小,僅對String類型的字段有效 insertable:表示在ORM框架執行插入操作時,該字段是否應出現INSETRT語句中。默認為true updateable:表示在ORM框架執行更新操作時,該字段是否應該出現在UPDATE語句中,默認為true。對于一經創建就不可以更改的字段,該屬性非常有用,如對于birthday字段 columnDefinition:表示該字段在數據庫中的實際類型。通常ORM框架可以根據屬性類型自動判斷數據庫中字段的類型,但是對于Date類型仍無法確定數據庫中字段類型究竟是DATE、TIME還是TIMESTAMP。此外,String的默認映射類型為VARCHAR,如果要將String類型映射到特定數據庫的BLOB或TEXT字段類型,該屬性非常有用 示例:

@Column(name="BIRTH",nullable="false",columnDefinition="DATE") public String getBithday() { return birthday; }

7、@Transient 可選

@Transient表示該屬性并非一個到數據庫表的字段的映射,ORM框架將忽略該屬性

如果一個屬性并非數據庫表的字段映射,就務必將其標示為@Transient,否則,ORM框架默認其注解為@Basic

示例:

//根據birth計算出age屬性 @Transient public int getAge() { return getYear(new Date()) -getYear(birth); }

8、@ManyToOne(fetch=FetchType,cascade=CascadeType) 可選

@ManyToOne表示一個多對一的映射,該注解標注的屬性通常是數據庫表的外鍵

optional:是否允許該字段為null,該屬性應該根據數據庫表的外鍵約束來確定,默認為true fetch:表示抓取策略,默認為FetchType.EAGER cascade:表示默認的級聯操作策略,可以指定為ALL、PERSIST、MERGE、REFRESH和REMOVE中的若干組合,默認為無級聯操作 targetEntity:表示該屬性關聯的實體類型,該屬性通常不必指定,ORM框架根據屬性類型自動判斷targetEntity

示例:

//訂單Order和用戶User是一個ManyToOne的關系 //在Order類中定義 @ManyToOne() @JoinColumn(name="USER") public User getUser() { return user; }

9、@JoinColumn 可選

@JoinColumn和@Column類似,介量描述的不是一個簡單字段,而是一個關聯字段,例如,描述一個@ManyToOne的字段.

name:該字段的名稱,由于@JoinColumn描述的是一個關聯字段,如ManyToOne,則默認的名稱由其關聯的實體決定.

例如,實體Order有一個user屬性來關聯實體User,則Order的user屬性為一個外鍵

其默認的名稱為實體User的名稱+下劃線+實體User的主鍵名稱

示例:

見@ManyToOne

10、@OneToMany(fetch=FetchType,cascade=CascadeType) 可選

@OneToMany描述一個一對多的關聯,該屬性應該為集體類型,在數據庫中并沒有實際字段

fetch:表示抓取策略,默認為FetchType.LAZY,因為關聯的多個對象通常不必從數據庫預先讀取到內存 cascade:表示級聯操作策略,對于OneToMany類型的關聯非常重要,通常該實體更新或刪除時,其關聯的實體也應當被更新或刪除

例如:實體User和Order是OneToMany的關系,則實體User被刪除時,其關聯的實體Order也應該被全部刪除

示例:

@OneTyMany(cascade=ALL) public List getOrders() { return orders; }

11、@OneToOne(fetch=FetchType,cascade=CascadeType) 可選

@OneToOne描述一個一對一的關聯

fetch:表示抓取策略,默認為FetchType.LAZY

cascade:表示級聯操作策略

示例:

@OneToOne(fetch=FetchType.LAZY) public Blog getBlog() { return blog; }

12、@ManyToMany 可選

@ManyToMany描述一個多對多的關聯,多對多關聯上是兩個一對多關聯,但是在ManyToMany描述中,中間表是由ORM框架自動處理

targetEntity:表示多對多關聯的另一個實體類的全名,例如:package.Book.class

mappedBy:表示多對多關聯的另一個實體類的對應集合屬性名稱

13、@MappedSuperclass 可選

@MappedSuperclass可以將超類的JPA注解傳遞給子類,使子類能夠繼承超類的JPA注解

示例:

@MappedSuperclass public class Employee() { .... } @Entity public class Engineer extends Employee { ..... } @Entity public class Manager extends Employee { ..... }

14、@Embedded

可選

@Embedded將幾個字段組合成一個類,并作為整個Entity的一個屬性

例如User包括id、name、city、street、zip屬性

我們希望city、street、zip屬性映射為Address對象。這樣,User對象將具有id、name和address這三個屬性.

Address對象必須定義為@Embededable

示例:

@Embeddable public class Address {city,street,zip} @Entity public class User { @Embedded public Address getAddress() { .......... }

快捷鍵

加粗 Ctrl + B 斜體 Ctrl + I 引用 Ctrl + Q插入鏈接 Ctrl + L插入代碼 Ctrl + K插入圖片 Ctrl + G提升標題 Ctrl + H有序列表 Ctrl + O無序列表 Ctrl + U橫線 Ctrl + R撤銷 Ctrl + Z

- 重做 Ctrl + Y


上一篇:chroot exec

下一篇:P1047 校門外的樹

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永仁县| 富蕴县| 临西县| 隆尧县| 大宁县| 柳林县| 五峰| 德化县| 中卫市| 峡江县| 廉江市| 凤庆县| 夏津县| 清苑县| 高台县| 海南省| 嵊州市| 阿拉尔市| 乐陵市| 称多县| 苍山县| 大方县| 甘泉县| 尉犁县| 萝北县| 太湖县| 庆安县| 道孚县| 贵定县| 梁平县| 屯门区| 民权县| 集安市| 巴里| 京山县| 南陵县| 德惠市| 巨野县| 巨野县| 资阳市| 白玉县|