freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

hibernate持久化數(shù)據(jù)庫(kù)第二天-閱讀頁(yè)

2024-12-22 21:58本頁(yè)面
  

【正文】 customer_id=3更改為 4 上面的代碼產(chǎn)生兩條 update語(yǔ)句 ,如何產(chǎn)生一條語(yǔ)句呢 ,完成上面的功能呢 ? Hibernate: update orders set order_number=?, price=?, customer_id=? where id=? Hibernate: update orders set customer_id=? where id=? 知識(shí)點(diǎn) 11:訂單 變更客戶 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 更改訂單表 id=6的 customer_id=3更改為 4 * 使用 session緩存的監(jiān)控功能講解為什么產(chǎn)生兩條 update語(yǔ)句 Hibernate會(huì)自動(dòng)清理緩存中的所有持久化對(duì)象,按照持久化對(duì)象的改變來(lái)同步更新數(shù)據(jù)庫(kù),因此執(zhí)行了上述的兩條更新語(yǔ)句所以會(huì)產(chǎn)生兩條 update語(yǔ)句 知識(shí)點(diǎn) 11:訂單 變更客戶 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 ? 在 hibernate中通過(guò)對(duì) inverse 屬性的值決定是由雙向關(guān)聯(lián)的哪一方來(lái)維護(hù)表和表之間的關(guān)系 . inverse=false 的為主動(dòng)方,inverse=true 的為被動(dòng)方 , 由主動(dòng)方負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系 ? 在沒(méi)有設(shè)置 inverse=true 的情況下,父子兩邊都維護(hù)父子關(guān)系 ? 在 1n 關(guān)系中,將 n 方設(shè)為主控方將有助于性能改善 (如果要國(guó)家元首記住全國(guó)人民的名字,不是太可能,但要讓全國(guó)人民知道國(guó)家元首, 就容易的多 ) ? 在 1N 關(guān)系中,若將 1 方設(shè)為主控方 會(huì)額外多出 update 語(yǔ)句 。 //查詢訂單 Order o6=(Order)(, 6)。 //().add(o6)。...39。 //查詢訂單 Order o6=(Order)(, 6)。 //去掉 (有影響不會(huì)更新 ) ().add(o6)。 知識(shí)點(diǎn) 11:set中 inverse屬性 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 結(jié)論: ,應(yīng)該在 one方把 inverse屬性設(shè)為 true, 這可以提高性能。 (customer)。同理,當(dāng)刪除雙向關(guān)聯(lián)的關(guān)系時(shí),也應(yīng)該修改 關(guān)聯(lián)兩端的對(duì)象的相應(yīng)屬性: ().remove(order)。 知識(shí)點(diǎn) 11:set中 inverse屬性 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 知識(shí)點(diǎn) 12:解除關(guān)聯(lián)關(guān)系 解除 6號(hào)訂單和 3號(hào)客戶的關(guān)聯(lián) 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 知識(shí)點(diǎn) 13:級(jí)聯(lián)刪除刪除 1號(hào)客戶的同時(shí),刪除 1號(hào)客戶所關(guān)聯(lián)的訂單 如果 cascade屬性取默認(rèn)值 none,不會(huì)自動(dòng)刪除和 customer關(guān)聯(lián)的其他持久化對(duì)象。 set name=orders table=orders cascade=delete inverse=true key column name=customer_id/column /key onetomany class=/ /set 再運(yùn)行刪除方法的時(shí)候,會(huì)自動(dòng)刪除 order對(duì)象,此時(shí) hibernate執(zhí)行如下語(yǔ)句: delete from orders where customer_id = 1。 delete from orders where id=1 建立一對(duì)多的雙向關(guān)聯(lián)關(guān)系 知識(shí)點(diǎn) 14:理解什么是 父子關(guān)系 所謂父子關(guān)系: 是指父方來(lái)控制子方的持久化生命周期,子方對(duì)象必須和一個(gè)父方對(duì)象關(guān)聯(lián)。 //查詢訂單 Order o6=(Order)(, 6)。 //從客戶集合刪除訂單 ().remove(o6)。 如果 cascade為默認(rèn)值 none, hibernate會(huì)執(zhí)行如下語(yǔ)句: update orders set Customer_id = null where ID = 2。 customer對(duì)象關(guān)聯(lián)的所有 order對(duì)象。當(dāng)試圖 load()對(duì)象時(shí),會(huì)判斷緩存中是否存在該對(duì)象,有則返回。 reresh:刷新 ,讓 session和數(shù)據(jù)庫(kù)同步 ,執(zhí)行查詢 ,把數(shù)據(jù)庫(kù)的最新信息顯示出來(lái) ,更新本地緩存的對(duì)象狀態(tài) . clear:清空緩存 ,等價(jià)于 ()。 2 (c)。 4 c = null。 7 ()。 //關(guān)閉 session 清空緩存 9 (())。 //r2對(duì)象不再引用 customer對(duì)象 ,customer對(duì)象結(jié)束生命周期 緩存的作用: 1。 2。 3。 知識(shí)點(diǎn) 4_3:清理 session緩存 操縱持久化對(duì)象 //查詢出對(duì)象后 ,再修改對(duì)象的屬性 public vid testSessionUpdateCache(){ Session session=()。 Customer c=(Customer)(, 1)。 //該行代碼加和不加沒(méi)有影響 //(c)。 ()。當(dāng)清理 緩存時(shí),通過(guò)比較對(duì)象的當(dāng)前屬性和快照,來(lái)判斷對(duì)象的那些屬性發(fā)生了變化。 清理緩存的模式 Session的 查詢方法 tx的 mit() Session的 flush() (默認(rèn) ) 清理 清理 清理 不清理 清理 清理 不清理 不清理 清理 操縱持久化對(duì)象 知識(shí)點(diǎn) 4_6:清理 session的緩存 (設(shè)置緩存的清理模式 ) 應(yīng)用大批量操作插入 10萬(wàn)記錄 產(chǎn)生異常: Java heap space內(nèi)存溢出 操縱持久化對(duì)象 知識(shí)點(diǎn) 4_7:清理 session的緩存的步驟 操縱持久化對(duì)象 Hibernate 把對(duì)象分為 4 種狀態(tài) : 持久化狀態(tài) , 臨時(shí)狀態(tài) , 游離狀態(tài) , 刪除狀態(tài) . Session 的特定方法能使對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài) 知識(shí)點(diǎn) 5:在 hibernate中 java對(duì)象的狀態(tài) 操縱持久化對(duì)象狀態(tài) – 在使用代理主鍵的情況下 , id 通常為 null – 不處于 Session 的緩存中 – 在數(shù)據(jù)庫(kù)中沒(méi)有對(duì)應(yīng)的記錄 知識(shí)點(diǎn) 5:臨時(shí)對(duì)象 (transient) 操縱持久化對(duì)象狀態(tài) 知識(shí)點(diǎn) 6:刪除對(duì)象 (Removed) – id 不為 null – 從一個(gè) Session實(shí)例的緩存中刪除 – Session 已經(jīng)計(jì)劃將其從數(shù)據(jù)庫(kù)刪除 , Session 在清理緩存時(shí) , 會(huì)執(zhí)行 SQL delete 語(yǔ)句 , 刪除數(shù)據(jù)庫(kù)中的對(duì)應(yīng)記錄 – 一般情況下 , 應(yīng)用程序不該再使用被刪除的對(duì)象 – (object)。 Customer c = new Customer)。 c = null。 ()。 處于生命周期中 轉(zhuǎn)變?yōu)橛坞x態(tài) ()。 結(jié)束生命周期 結(jié)束生命周期 知識(shí)點(diǎn) 9:測(cè)試 hibernate中 java對(duì)象的狀態(tài) 知識(shí)點(diǎn) 10:對(duì)象的狀態(tài)轉(zhuǎn)換圖 臨時(shí)狀態(tài) 持久化狀態(tài) 游離狀態(tài) 刪除狀態(tài) new 語(yǔ)句 get() Load() () () () save() saveOrUpdate() evict() close() clear() update() saveOrUpdate() lock() delete() delete() 垃圾回收 垃圾回收 垃圾回收 知識(shí)點(diǎn) 11:對(duì)象的狀態(tài)總結(jié) Session緩存存在對(duì)應(yīng)的記錄 數(shù)據(jù)中存在對(duì)應(yīng)的記錄 臨時(shí)態(tài) no no 持久態(tài) yes 可能有也可能沒(méi)有 游離態(tài) no 可能有 (數(shù)據(jù)沒(méi)有刪除 )也可能沒(méi)有 Customer c=new Customer()。//持久對(duì)象 ,但數(shù)據(jù)庫(kù)中沒(méi)有 操縱持久化對(duì)象的方法 ? Session 的 save() 方法使一個(gè)臨時(shí)對(duì)象轉(zhuǎn)變?yōu)槌志没瘜?duì)象 ? Session 的 save() 方法完成以下操作 : – 把 News 對(duì)象加入到 Session 緩存中 , 使它進(jìn)入持久化狀態(tài) – 選用映射文件指定的標(biāo)識(shí)符生成器 , 為持久化對(duì)象分配唯一的 id. 在使用代理主鍵的情況下 , setId() 方法為 News 對(duì)象設(shè)置 id 使無(wú)效的 . – 計(jì)劃執(zhí)行一條 insert 語(yǔ)句 ,把 Customer對(duì)象當(dāng)前的屬性值組裝到 insert語(yǔ)句中 ? Hibernate 通過(guò)持久化對(duì)象的 id 來(lái)維持它和數(shù)據(jù)庫(kù)相關(guān)記錄的對(duì)應(yīng)關(guān)系 . 當(dāng) News 對(duì)象處于持久化狀態(tài)時(shí) , 不允許程序隨意修改它的 ID 知識(shí)點(diǎn) 12: 操縱持久化對(duì)象 save() 操縱持久化對(duì)象的方法 ? Session 的 update() 方法使一個(gè)游離對(duì)象轉(zhuǎn)變?yōu)槌志没瘜?duì)象 , 并且計(jì)劃執(zhí)行一條 update 語(yǔ)句 . 知識(shí)點(diǎn) 13_1: 操縱持久化對(duì)象 update() 操縱持久化對(duì)象的方法 ? 若希望 Session 僅當(dāng)修改了 News 對(duì)象的屬性時(shí) , 才執(zhí)行 update() 語(yǔ)句 , 可以把映射文件中 class 元素的 selectbeforeupdate(更新之前先查詢 ) 設(shè)為 true. 該屬性的默認(rèn)值為 false 知識(shí)點(diǎn) 13_2: 操縱持久化對(duì)象 update() 操縱持久化對(duì)象的方法 ? 當(dāng) update() 方法關(guān)聯(lián)一個(gè)游離對(duì)象時(shí) , 如果在 Session 的緩存中已經(jīng)存在相同 id 的持久化對(duì)象 , 會(huì)拋出異常 知識(shí)點(diǎn) 13_3: 操縱持久化對(duì)象 update() 原因是 :兩個(gè)不同的對(duì)象擁有相同的 id 操縱持久化對(duì)象的方法 ? 當(dāng) update() 方法關(guān)聯(lián)一個(gè)游離對(duì)象時(shí) , 如果在數(shù)據(jù)庫(kù)中不存在相應(yīng)的記錄 , 也會(huì)拋出異常 . 知識(shí)點(diǎn) 13_4: 操縱持久化對(duì)象 update() 操縱持久化對(duì)象的方法 saveOrUpdate: 該方法同時(shí)包含 save和 update方法,如果參數(shù)是臨時(shí)對(duì)象就用 save方 法,如果是游離對(duì)象就用 update方法,如果是持久化對(duì)象就直接返回。但可以定義屬性為 int id * 此時(shí) id默認(rèn)值是 0而不是 null,應(yīng)該執(zhí)行更新操作 * 但實(shí)際我們要執(zhí)行的插入操作。 ()。 觸發(fā)器的行為導(dǎo)致緩存與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致。 Session的 update操作方法盲目的激活觸發(fā)器 如果游離狀態(tài)的對(duì)象的屬性和數(shù)據(jù)庫(kù)一致,則更新操作是多余的。分為兩種:外鍵關(guān)聯(lián)和主鍵關(guān)聯(lián)。在業(yè)務(wù)邏輯中要求一家公司只有唯一的地址,一個(gè)地址也只有一家公司。 fk pk 唯一 映射一對(duì)一外鍵雙向關(guān)聯(lián) ? 對(duì)于基于外鍵的 11關(guān)聯(lián),其外鍵可以存放在任意一邊, 在需要存放外鍵一端,增加 manytoone 元素 。 Transaction tx=()。 (bochy)。 (北京 )。 (address)。 (address)。 ()。 } 知識(shí)點(diǎn) 1:測(cè)試保存 映射一對(duì)一外鍵雙向關(guān)聯(lián) public vid insertUnique(){ Session session=()。 //創(chuàng)建公司 Company pany=new Company()。 //查詢地址 Address address=(Address)(, 1)。 (pany)。 ()。 } 知識(shí)點(diǎn) 2:測(cè)試唯一性 映射一對(duì)一主鍵雙向關(guān)聯(lián) ? 一對(duì)一的另一種解決方式就是主鍵關(guān)聯(lián),在這種關(guān)聯(lián)關(guān)系中,要求兩個(gè)對(duì)象的主鍵必須保持一致,通過(guò)兩個(gè)表的主鍵建立關(guān)聯(lián)關(guān)系,無(wú)須外鍵參與。 ? constrained(約束 ):指定為當(dāng)前持久化類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的主鍵添加一個(gè)外鍵約束,引用被關(guān)聯(lián)的對(duì)象 (“對(duì)方 ” )所對(duì)應(yīng)的數(shù)據(jù)庫(kù)表主鍵 映射一對(duì)一主鍵雙向關(guān)聯(lián) 映射一對(duì)一主鍵雙向關(guān)聯(lián) public vid insert(){ Session session=()。 Company pany=new Company()。 Address address=new Address()。 (中國(guó) )。 (pany)。 (pany)。 ()。 一個(gè)用戶可以選修多門角色 , 一個(gè)角色可以被多名用戶選修 。 映射多對(duì)多雙向關(guān)聯(lián)關(guān)系 ? 雙向 nn 關(guān)聯(lián)需要兩端都使用集合屬性 ? 雙向 nn關(guān)聯(lián)必須使用中間表 ? 集合屬性應(yīng)增加 key 子元素用以映射外鍵列 , 集合元素里還應(yīng)增加 manytomany子元素關(guān)聯(lián)實(shí)體類 ? 在雙向 nn 關(guān)聯(lián)的兩邊都需指定連接表的表名及外鍵列的列名 . 兩個(gè)集合元素 set 的 table 元素的值必須指定,而且必須相同。也就是說(shuō),一邊的 set元素的 key的 cloumn值為a,manytomany 的 column 為 b;則另一邊的 set 元素的 key 的 column 值 b,manytomany的 column 值為
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1