說(shuō)明
??????? 在HibernateAnnotations中通過(guò)@ManyToMany注解可定義多對(duì)多關(guān)聯(lián)。同時(shí),也需要通過(guò)注解@JoinTable描述關(guān)聯(lián)表和關(guān)聯(lián)條件。對(duì)于雙向關(guān)聯(lián),其中一端必須定義為owner,另一端必須定義為inverse(在對(duì)關(guān)聯(lián)表進(jìn)行更性操作時(shí)這一端將被忽略)。被關(guān)聯(lián)端不必也不能描述物理映射,只需要一個(gè)簡(jiǎn)單的mappedBy參數(shù),該參數(shù)包含了主體端的屬性名,這樣就綁定了雙方的關(guān)系。
??????上周六去電影院圓了兒時(shí)的夢(mèng)想,看了變形金剛,超棒的一部片子 ^_^。那么就以劇院和觀眾為例講解吧。
如何制作PO
1)找到CUBE--需要引入哪些類:











2)找到汽車人--主體端:




















































功能說(shuō)明:
@ManyToMany注解
???? targetEntity屬性:指向被關(guān)聯(lián)端的實(shí)體對(duì)象
???? cascade屬性:與Hibernate xml配置文件中的意思一樣,這里選用兩種方式
????????????CascadeType.PERSIST:若實(shí)體是處于被管理狀態(tài),或當(dāng)persist()方法被調(diào)用時(shí),觸發(fā)級(jí)聯(lián)創(chuàng)建(create)操作。???
????????????CascadeType.MERGE:若實(shí)體是處于被管理狀態(tài),或當(dāng)merge)方法被調(diào)用時(shí),觸發(fā)級(jí)聯(lián)合并(merge)操作。
?????????????其它屬性如CascadeType.REMOVE、CascadeType.REFRESH、CascadeType.ALL等屬性可參考Hibernate Annotations Reference。
???? fetch屬性:關(guān)聯(lián)關(guān)系獲取方式
?????????????? LAZY(默認(rèn)值)在第一次訪問(wèn)關(guān)聯(lián)對(duì)象時(shí)才觸發(fā)相應(yīng)的查詢操作。
?????????????? 另一個(gè)值EAGER是通過(guò)out join select直接獲取關(guān)聯(lián)對(duì)象
????
@JoinTable注解
???? name屬性:指定關(guān)聯(lián)表名 若不指定Hibernate可以根據(jù)既定的規(guī)則自動(dòng)生成(具體規(guī)則見reference)
???? joinColumns屬性:指定主體端的外鍵
???? inverseJoinColumns屬性:指定被關(guān)聯(lián)端的外鍵
@Cache注解
???? usage屬性:給定了緩存的并發(fā)策略
3)找到霸天虎--被關(guān)聯(lián)端:












































@ManyToMany注解
???? mappedBy屬性:指定了主體端的屬性名,用以綁定雙方的關(guān)系???
汽車人,變形!--如何操作























tips:注意第二步的操作。
好了,大功告成!說(shuō)回電影,紅蜘蛛這小子跑得還挺快,期待續(xù)集!
PS:找到一份中文的hiberante?annotations reference,與大家共享。點(diǎn)擊下載
??????????????????????????????????????????????????????????????????????????????THE END
????????????????