
類級別注解
1、使用注解的目的:為了簡化繁瑣的ORM映射文件(*.hbm)的配置
2、JPA與Hibernate的關系
.什么是JPA?(全稱Java Persistence API(java持久化的API接口));JPA注解是JAVAEE的標準和規(guī)范
.JPA 是標準接口,Hibernate是實現(xiàn),但是其功能是JPA的超集。
.Hibernate通過hibernate-annotation,hibernate-entitymanager,hibnernate-core三個組件來實現(xiàn)JPA。
.一般在實際開發(fā)中,優(yōu)先考慮使用JPA注解,這樣更有利與程序的移植和擴展。
3、Hibernate注解的分類
類級別的注解,屬性級別注解,映射關系注解
類級別的注解.@Entity——表示實體類(一個實體類對應數(shù)據(jù)庫中的一張表)
類級別的注解.@Table
類級別的注解.@Embeddable——表示它是嵌入類
類級別的注解.Schema 和 catalog

4、
5、Hibernate類級別注解之@Entity注解


hibernate 配置文件

實體類1

實體類2

測試類
6、Hibernate類級別注解之@Table注解


一個數(shù)據(jù)庫必然屬于一個schema(模式),一個schema必然屬于一個catalog(目錄),一個模式包含了一個數(shù)據(jù)庫的對象,例如表、視圖等
從實現(xiàn)的角度來看,各種數(shù)據(jù)庫系統(tǒng)對Catalog和Schema的支持和實現(xiàn)方式千差萬別的。


其他的跟 5 一樣
7、Hibernate類級別注解之@Embeddable注解


@Embeddable
屬性級別注解
1、添加方式
一是寫在屬性字段上面;二是寫在屬性的get訪問器的上面
2、注解分別有 (加粗的)
@Id、@SequenceGenerator、@GeneratedValue、@Column、@Embedded、@EmbeddedId、@Lob、@Version、@Basic、@Transient
3、Hibernate屬性級別注解之@Id注解

設置主鍵
Ps1:對于復合主鍵,實體類必須實現(xiàn)serializable接口(聲明式接口,不需要實現(xiàn)任何方法)。
Ps2:將 String類型 的屬性設置成主鍵是一定要指定該屬性的長度,可以用 Column( length=8) 注解來指定,不然 MySQL 會默認讓其長度為255,而 MySQL 主鍵的長度不允許太長。(即使,Ps1成功實現(xiàn),但是如果Ps2不通過,即使Junit變?yōu)榫G條,表也創(chuàng)建不成功)
4、Hibernate屬性級別注解之@GeneratedValue注解

主鍵生成策略

第四點 例子
String類型做主鍵,@GenericGenerator()

例子

添加一名學生信息
5、Hibernate屬性級別注解之@Column注解

6、Hibernate屬性級別注解之@Embedded注解


7、Hibernate屬性級別注解之@EmbeddedId注解


復合主鍵

測試類
8、Hibernate屬性級別注解之@Transient注解

相當于 設置保密的字段,不映射成表的字段
Hibernate關聯(lián)映射注解
1、Hibernate關聯(lián)映射注解之實體之間的關系

2、Hibernate關聯(lián)映射注解之 一對一 單向 外鍵關聯(lián)

pid相當于,被控類的主鍵

配置類

測試類
3、Hibernate關聯(lián)映射注解之 一對一雙向 外鍵關聯(lián)


測試類跟上面一樣
4、Hibernate關聯(lián)映射注解之一對一單向外鍵聯(lián)合主鍵

具體看:7、Hibernate屬性級別注解之@EmbeddedId注解
5、Hibernate關聯(lián)映射注解之多對一單向外鍵關聯(lián)

這里的JoinColumn 參數(shù)的解釋寫反了



測試類
6、Hibernate關聯(lián)映射注解之一對多單向外鍵關聯(lián)



注意跟第5點 進行對比
7、Hibernate關聯(lián)映射注解之一對多雙向外鍵關聯(lián)


其他的保持不變,測試類一樣
8、Hibernate關聯(lián)映射注解之 多對多 單向外鍵關聯(lián)




測試類
9、Hibernate關聯(lián)映射注解之 多對多雙向 外鍵關聯(lián)


作者:屌事不扣幣
鏈接:http://m.itdecent.cn/p/f1b91943c88c
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。