【正文】
“ Cell Phones”。 例子 —— 1 例子 —— 2 例子 —— 3 對象的狀態(tài)圖 區(qū)分 transient and detached對象 ? Identifier屬性是否為 null ? 對于非對象類型的 Identifier,判斷 unsavedvalue的值 ? 優(yōu)先考慮使用對象類型的 Identifier,因為對象可以為 null。 ? detached object和數(shù)據(jù)庫失去了聯(lián)系,但是它們不是 transient object,它們具有datebase identity。 ? hibernate會監(jiān)測臟數(shù)據(jù),在盡可能遲的時候做同步的動作。 ? 對于 transient對象,調(diào)用 ()可以將其轉(zhuǎn)變?yōu)?persistent object。 ? Hibernate通過 session來控制對象的持久生命周期: transient,persistent, detached. Transient objects ? new生成的對象稱為 Transient, 它沒有與數(shù)據(jù)庫中的某一行記錄關(guān)聯(lián),一旦它被dereferenced就會被 JVM回收。 Bid可以單獨的被加載,而ponent不能; bid可被共享而ponent不能。 ? cascade是有方向性的,也可以在 bid端設(shè)置級聯(lián)持久化 item,但是因為 bid是在 item后創(chuàng)建的,這樣做沒有意義。才持久化。 主控方和被控方 ? inverse=“true”即告訴 hibernate對方是主控方。 many to one one to many 雙向關(guān)聯(lián)產(chǎn)生的問題 ? 在內(nèi)存中有兩個不同的地方代表同一個值:即外鍵 item_id ? 如果我們調(diào)用了(item)。 associations— 關(guān)聯(lián) ? 對象之間通過 reference和 reference集合來關(guān)聯(lián),而關(guān)系模型則通過外鍵進(jìn)行關(guān)聯(lián)。 多態(tài)查詢的解決 —— 父類 ? 查詢父類:用 outer join 多態(tài)查詢的解決 —— 子類 ? 查詢子類:用 inner join ? 這種方式如果用手工寫代碼完成則很困難。CC39。 Table per class hierarchy 整個繼承樹對應(yīng)一張表,子類用 type discriminator字段來區(qū)分。 這種方式會產(chǎn)生“ Polymorphic queries”的問題。 ? ponent類沒有相應(yīng)的主鍵值,它從屬于 Entity,它的生命周期從屬于 Entity,隨著 Entity的消亡而消亡。 U s e rP K u s e r I D n a m e e m a i l h o m e _ c i t y h o m e _ s t r e e t h o m e _ z i p c o d e b i l l _ c i t y b i l l _ s t r e e t b i l l _ z i p c o d eEntity and Component ? 在 Java中不存在實體類和 ponent類的區(qū)別,所有類的含義都是相同的。 n a m e : S t r i n g a d d r e s s : S t r i n gU s e r n a m e : S t r i n g c i t y : S t r i n g s t r e e t : S t r i n g z i p c o d e : S t r i n gU s e r n a m e : S t r i n g h o m e C i t y : S t r i n g h o m e S t r e e t : S t r i n g h o m e Z i p c o d e : S t r i n g b i l l C i t y : S t r i n g b i l l S t r e e t : S t r i n g b i l l Z i p c o d e : S t r i n gU s e r細(xì)粒度模型的設(shè)計 該設(shè)計體現(xiàn)了一個“合成 ”的關(guān)系( position):即整體和部分的關(guān)系。用該算法生成的 id可以確保在一個網(wǎng)絡(luò)中唯一。此方式的實現(xiàn)機(jī)制為在當(dāng)前應(yīng)用實例中維持一個變量,以保存著當(dāng)前的最大值,之后每次需要生成主鍵的時候?qū)⒋酥导?1作為主鍵。 ? posite keys:多個 natural keys聯(lián)合組成的primary key。 ? a == b; (b);().equals(())。 ? 數(shù)據(jù)庫對象的同一性( identity):指向同一個表的同一個記錄。( associations) ? 對象導(dǎo)航問題。( AttributeOriented Programming) 目 錄 ? 持久層的概念及必要性 ? hibernate框架及核心類介紹 ? hibernate進(jìn)行持久化的一個例子 ? hibernate如何解決對象和模型的不匹配 ? 對象的持久性生命周期 ? 對目前項目的進(jìn)一步封裝和思考 Hibernate面臨的挑戰(zhàn): 對象 — 關(guān)系模型的不匹配( Paradigm Mismatch) ? 粒度問題。 ? Ant可以簡化項目的編譯、測試、文檔、部署等日常工作的手工工作量。 ()。 Transaction tx = ()。 (dep)。 update ? Session s = ()。 ()。 Session s = ()。 ? private String password。 Transaction (事務(wù) ) ? Transaction將應(yīng)用代碼從底層的事務(wù)實現(xiàn)中抽象出來 ——可能是一個 JDBC事務(wù)或一個 JTA事務(wù),這有助于保持 Hibernate應(yīng)用在不同類型的執(zhí)行環(huán)境或容器中的可移植性。 ? Session代表與數(shù)據(jù)庫之間的一次操作。 ? 會話工廠在應(yīng)用初始化時被創(chuàng)建,是一個重量級的類,它在多個應(yīng)用線程間進(jìn)行被共享,通常情況下,整個應(yīng)用只有唯一的一個會話工廠,然而,如果你使用 Hibe