【正文】
義的方法。( associations) ? 對(duì)象導(dǎo)航問(wèn)題。( subtypes) ? 同一性問(wèn)題。( AttributeOriented Programming) 目 錄 ? 持久層的概念及必要性 ? hibernate框架及核心類(lèi)介紹 ? hibernate進(jìn)行持久化的一個(gè)例子 ? hibernate如何解決對(duì)象和模型的不匹配 ? 對(duì)象的持久性生命周期 ? 對(duì)目前項(xiàng)目的進(jìn)一步封裝和思考 Hibernate面臨的挑戰(zhàn): 對(duì)象 — 關(guān)系模型的不匹配( Paradigm Mismatch) ? 粒度問(wèn)題。 ? 為 web、 ejb、 struts、 webwork、 hibernate、jdo、 jmx等等生成描述文件、源碼等。 ? Ant可以簡(jiǎn)化項(xiàng)目的編譯、測(cè)試、文檔、部署等日常工作的手工工作量。 ? ANT是一個(gè)基于 Java的自動(dòng)化腳本引擎,腳本格式為 XML。 ()。 (dep)。 Transaction tx = ()。 ()。 (dep)。 Department dep = (Department)(, depID)。 update ? Session s = ()。 Department dep = (Department)(, depID)。 ()。 (dep)。 Session s = ()。 ? ……… ? } ? create table tbl_user ( ? name varchar(255) not null , ? password varchar(255), ? ………. ? primary key (name) ? ) 對(duì)象 關(guān)系數(shù)據(jù)庫(kù) 類(lèi) 表 對(duì)象 記錄 類(lèi)的屬性(基本類(lèi)型) 表的列 1:n/n:1 外鍵 一個(gè)簡(jiǎn)單例子 D e p a r t m e n td e p a r t m e n t I Dn a m e: L o n g: S t r in g h i b e r n a t e m a p p i n g c l a s s n a m e = c o m . e t o n g . s y s t e m . D e p a r t m e n t t a b l e = t _ d e p a r t m e n t i d n a m e = d e p a r t m e n t I D c o l u m n = d e p a r t m e n t _ i d t y p e = l o n g g e n e r a t o r c l a s s = i n c r e m e n t / g e n e r a t o r / i d p r o p e r t y n a m e = ” n a m e ” c o l u m n = n a m e n o t n u l l = ” t r u e ” t y p e = s t r i n g / / c l a s s / h i b e r n a t e m a p p i n g Hibernate基本數(shù)據(jù)類(lèi)型 實(shí)例前的準(zhǔn)備 — 項(xiàng)目目錄結(jié)構(gòu) insert ? Department dep = new Department()。 ? private String password。 ? Transaction tx = ()。 Transaction (事務(wù) ) ? Transaction將應(yīng)用代碼從底層的事務(wù)實(shí)現(xiàn)中抽象出來(lái) ——可能是一個(gè) JDBC事務(wù)或一個(gè) JTA事務(wù),這有助于保持 Hibernate應(yīng)用在不同類(lèi)型的執(zhí)行環(huán)境或容器中的可移植性。 ? 會(huì)話(huà)并不是線(xiàn)程安全的因此應(yīng)該被設(shè)計(jì)為每次只能在一個(gè)線(xiàn)程中使用 。 ? Session代表與數(shù)據(jù)庫(kù)之間的一次操作。 ? SessionFactory sessionFactory = ()。 ? 會(huì)話(huà)工廠(chǎng)在應(yīng)用初始化時(shí)被創(chuàng)建,是一個(gè)重量級(jí)的類(lèi),它在多個(gè)應(yīng)用線(xiàn)程間進(jìn)行被共享,通常情況下,整個(gè)應(yīng)用只有唯一的一個(gè)會(huì)話(huà)工廠(chǎng),然而,如果你使用 Hibernate訪(fǎng)問(wèn)多個(gè)數(shù)據(jù)庫(kù),你需要對(duì)每一個(gè)數(shù)據(jù)庫(kù)使用一個(gè)會(huì)話(huà)工廠(chǎng)。 ? Configuration cfg = new Configuration()。它包括如下內(nèi)容: ? Hibernate運(yùn)行的底層信息:數(shù)據(jù)庫(kù)的 URL、用戶(hù)名、密碼、 JDBC驅(qū)動(dòng)類(lèi),數(shù)據(jù)庫(kù)Dialect,數(shù)據(jù)庫(kù)連接池等。 持久層對(duì)于業(yè)務(wù)層是透明的,持久層和業(yè)務(wù)層的變化是彼此獨(dú)立的。 ? 更好的移植性,只需要簡(jiǎn)單的修改配置參數(shù),即可實(shí)現(xiàn)底層數(shù)據(jù)庫(kù)的切換。凡是無(wú)趣的工作都交給機(jī)器去完成。 新需求的產(chǎn)生 通用的持久層框架 ? 將編寫(xiě)支撐性代碼的工作量降到最低。 ? 這些代碼基本上都是“支撐性”代碼,單調(diào)、機(jī)械、乏味、不優(yōu)雅。 ? 業(yè)務(wù)層和持久層可以彼此獨(dú)立的變化,比如:僅僅替換數(shù)據(jù)訪(fǎng)問(wèn)層的實(shí)現(xiàn),可以將系統(tǒng)部署在不同的數(shù)據(jù)庫(kù)平臺(tái)上。 ? Domain Object則提供了面向領(lǐng)域的對(duì)象,封裝了具體的業(yè)務(wù)規(guī)則。 ? 好處是:簡(jiǎn)單方便、開(kāi)發(fā)迅速,不需要復(fù)雜的設(shè)計(jì),比較適合于業(yè)務(wù)簡(jiǎn)單的應(yīng)用。對(duì)象 /關(guān)系映射 — Hibernate ? 學(xué)員要求 :熟悉 Java、 SQL、 JDBC,掌握面向?qū)ο蟮?開(kāi)發(fā) 方法,并有實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn) ? 課程目標(biāo): 理解 O/R Mapping原理,掌握Hibernate開(kāi)發(fā)的相關(guān)知識(shí),并能使用Hibernate進(jìn)行實(shí)際項(xiàng)目開(kāi)發(fā) 作者:趙青 目 錄 ? 持久層的概念及必要性 ? hibernate框架及核心類(lèi)介紹 ? hibernate進(jìn)行持久化的一個(gè)例子