Hibernate 注解

使用注解的目的是簡(jiǎn)化繁瑣的ORM映射文件(.hbm)的配置

JPA全稱是java? Persistence API(java持久化接口)

JPA注解是JAVAEE的規(guī)范和標(biāo)準(zhǔn)? JPA是標(biāo)準(zhǔn)接口卢厂,Hibernate是實(shí)現(xiàn),通過hibernate-annitation,hibernate-entityManager,hibernate-code組件來實(shí)現(xiàn)


一:類級(jí)別注解

@Entity:映射實(shí)體類

@Entity(name = "tableName")

?? name:可選霉囚,對(duì)應(yīng)數(shù)據(jù)庫中的一個(gè)表救巷。若表名與實(shí)體類名相同丙猬,則可以省略

使用@Entity時(shí)必須指定實(shí)體類的主鍵屬性(通過在某個(gè)屬性的getter方法上加@Id實(shí)現(xiàn))

@Table(name = "" , catalog = "" , schema = "")

與@Entity配合使用樱哼,只能標(biāo)注在實(shí)體的class定義處趁冈,表示實(shí)體對(duì)應(yīng)的數(shù)據(jù)庫表的信息

mysql5.7支持catalog但是是不支持schema的

name:可選悔捶,映射表的名稱皂岔,默認(rèn)表名和實(shí)體名稱一致蹋笼,只有在不一致的情況下才需要指定表名

catalog:可選,表示Catalog名稱躁垛,

schema:可選姓建,表示Schema名稱(相當(dāng)于數(shù)據(jù)庫名(但這樣又不會(huì)去創(chuàng)建一個(gè)新的數(shù)據(jù)庫))(在創(chuàng)建表時(shí),sql語句表名前會(huì)有數(shù)據(jù)庫名的限定)

@Embeddable表示一個(gè)非Entity類可以嵌入到另一個(gè)Entity中作為屬性存在缤苫,即一個(gè)用戶自定義的類型可以作為數(shù)據(jù)庫表的屬性(定義在自定義類的.class處)


屬性級(jí)別注解:

添加方式:

一是寫在屬性字段上面

二是寫在屬性的get訪問器的上面

@Id:必須速兔,定義了映射到數(shù)據(jù)庫表的主鍵的屬性,一個(gè)實(shí)體類可以有一個(gè)或者多個(gè)屬性被映射到主鍵活玲,可置于主鍵屬性或者其getter前

如果是聯(lián)合主鍵涣狗,該實(shí)體類必須實(shí)現(xiàn) Serializable

字符串作為主鍵屬性,長(zhǎng)度不能太長(zhǎng)

隨著版本更新舒憾,這兩個(gè)問題或?qū)⒉淮嬖?br>


@GeneratedValue( strategy = Generation.AUTO(主鍵由程序自動(dòng)控制)镀钓,generator = "")

Generation.identity才是主鍵自增長(zhǎng)

可選,用于定義主鍵生成策略

將string類型作為屬性镀迂,并為手工賦值

@Id

@GeneratedValue(generator="sid")

@GenericGenerator(name="sid",strategy="assigned")

@Column描述了數(shù)據(jù)庫表中該字段的詳細(xì)定義

常用屬性:length丁溅,可選,表示該字段的大小探遵,僅對(duì)String類型的字段有效窟赏,默認(rèn)值是255

@embedded是注釋屬性的,表示該屬性的類是嵌入類

注意:同時(shí)嵌入類也必須標(biāo)注@Embeddable

@EmbeddedId使用嵌入式主鍵類實(shí)現(xiàn)復(fù)合主鍵

注意:嵌入式主鍵類必須實(shí)現(xiàn)Serializable接口箱季、必須有默認(rèn)的public無參數(shù)的構(gòu)造方法涯穷,必須覆蓋equals()和hashCode()方法

@Transient:可選,表示該屬性并非一個(gè)到數(shù)據(jù)庫表的字段的映射藏雏,ORM框架將忽略該屬性拷况,如果一個(gè)屬性并非數(shù)據(jù)庫表的字段映射,就務(wù)必將其表示標(biāo)志為@Transient掘殴,否則ORM框架默認(rèn)其注解為@Basic


一對(duì)一單向外鍵:

寫在主表類處

@OneToOne(cascade=CascadeType.ALL(指定級(jí)聯(lián)關(guān)系))

@JoinColumn(name="pid", unique="true")把被控類的主鍵寫到主控類中

一對(duì)一雙向外鍵:

主控方的配置同一對(duì)一單向外鍵

@OneToOne(mappedBy="card")(寫在被控方的主控方引用上面赚瘦,值是被控的屬性的變量)

雙向關(guān)聯(lián),必須設(shè)置mappedBy屬性奏寨,因?yàn)殡p向關(guān)聯(lián)只能交給一方去控制起意,不可能在雙方都設(shè)置外鍵保存關(guān)聯(lián)關(guān)系,否則雙方都無法保存

一對(duì)一雙向外鍵聯(lián)合主鍵:

主鍵類必須實(shí)現(xiàn)serializable聲明式接口服爷,重寫hashCode()方法和equals()方法

主鍵類@Embeddable

實(shí)體類@EmbeddedId


多對(duì)一單向外鍵:

多方持有一方的引用

@ManyToOne(cascade={CascadeType.ALL}杜恰,fetch=FetchType.EAGER)

@JoinColumn(name="cid(和一對(duì)多一樣)"获诈,referencedColumnName="CID")

@JoinColumn中的name為當(dāng)前類的屬性名,(多對(duì)一單向心褐,有多方維護(hù))所以舔涎,name為student中的cid,而ReferenceColumnName為引用表的列(多對(duì)一單向逗爹,所以為一方的引用列)即ClassRoom中的主鍵列


一對(duì)多單向外鍵:

一方持有多方的集合亡嫌,一個(gè)班級(jí)有多個(gè)學(xué)生(一對(duì)多)

在集合上設(shè)置

@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)

@JoinColumn(name="cid")(一方的主鍵)

一對(duì)多的時(shí)候掘而,一的內(nèi)部是個(gè)集合挟冠,為了減小數(shù)據(jù)庫的壓力,少加載數(shù)據(jù)所以用LAZZY加載袍睡,反之知染,多對(duì)一的時(shí)候每個(gè)多方只多加載一條數(shù)據(jù),所以可以用EAGER加載


多對(duì)多單向外鍵

學(xué)生和教師構(gòu)成多對(duì)多的關(guān)聯(lián)關(guān)系

其中一方持有另一方的集合對(duì)象(學(xué)生擁有教師的集合)

創(chuàng)建中間表

//學(xué)生類

@ManyToMany

@JoinTable(

?? name="teachers_students",

?? joinColumns={@JoinColumn(name="sid")},

?? inverseJoinColumns={JoinColumn(name="tid")}

)


多對(duì)多雙向外鍵

雙方持有對(duì)方的集合對(duì)象斑胜,

//教師類

@ManyToMany(mappedBy="teachers")(將主控方交給學(xué)生類)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末控淡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子止潘,更是在濱河造成了極大的恐慌掺炭,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凭戴,死亡現(xiàn)場(chǎng)離奇詭異涧狮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)么夫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門者冤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魏割,你說我怎么就攤上這事譬嚣。” “怎么了钞它?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)殊鞭。 經(jīng)常有香客問我遭垛,道長(zhǎng),這世上最難降的妖魔是什么操灿? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任锯仪,我火速辦了婚禮,結(jié)果婚禮上趾盐,老公的妹妹穿的比我還像新娘庶喜。我一直安慰自己小腊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布久窟。 她就那樣靜靜地躺著秩冈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斥扛。 梳的紋絲不亂的頭發(fā)上入问,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音稀颁,去河邊找鬼芬失。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匾灶,可吹牛的內(nèi)容都是我干的棱烂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼阶女,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼颊糜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起张肾,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤芭析,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吞瞪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馁启,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年芍秆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惯疙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妖啥,死狀恐怖霉颠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荆虱,我是刑警寧澤蒿偎,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站怀读,受9級(jí)特大地震影響诉位,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菜枷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一苍糠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啤誊,春花似錦岳瞭、人聲如沸拥娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稚瘾。三九已至,卻和暖如春乏矾,著一層夾襖步出監(jiān)牢的瞬間孟抗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工钻心, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凄硼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓捷沸,卻偏偏與公主長(zhǎng)得像摊沉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痒给,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1.類級(jí)別注解 @Entity映射實(shí)體類 @Table映射數(shù)句庫表 @Entity(name="tableName...
    苗義閱讀 1,124評(píng)論 0 47
  • JPA Java Persistence API----java持久化接口 Hibernate注解分類 類級(jí)別注解...
    蕊er閱讀 564評(píng)論 0 2
  • 類級(jí)別注解 1说墨、使用注解的目的:為了簡(jiǎn)化繁瑣的ORM映射文件(*.hbm)的配置 2、JPA與Hibernate的...
    波瀾不驚_001閱讀 779評(píng)論 1 5
  • 類級(jí)別注解 1苍柏、使用注解的目的:為了簡(jiǎn)化繁瑣的ORM映射文件(*.hbm)的配置 2尼斧、JPA與Hibernate的...
    c5fc16271aee閱讀 1,469評(píng)論 0 9
  • 現(xiàn)狀:現(xiàn)在都是隔三差五的背單詞,做習(xí)題试吁。有時(shí)候有緊迫感的時(shí)候會(huì)強(qiáng)迫自己花費(fèi)時(shí)間背單詞等棺棵。距離英語四級(jí)筆試時(shí)間越來越...
    Tomorrow方閱讀 272評(píng)論 0 0