新聞中心
在向大家詳細(xì)介紹Hibernate3實(shí)踐之前,首先讓大家了解下Session的save()、persist()、update()、saveOrUpdate()、merge()、delete()方法。

10年的潛江網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整潛江建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“潛江網(wǎng)站設(shè)計(jì)”,“潛江網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
Hibernate3實(shí)踐
Hibernate不是盞省油的燈,也不是想像的射來(lái)射去很簡(jiǎn)單的事。有很多細(xì)節(jié)處理不好會(huì)讓你很不舒服的,這方面最突出的表現(xiàn)在兩方面:一是事務(wù)管理,是JTA事務(wù)還是 JDBC事務(wù)?幸虧有了Spring和J2EE容器;二是胡亂映射,模型關(guān)系建立不合理或者錯(cuò)誤導(dǎo)致,或者是映射策略和技術(shù)不過(guò)關(guān)導(dǎo)致。這樣的最終結(jié)果是拋出一堆HibernateException,摸不著頭腦。下面是我實(shí)踐中的一些總結(jié)作為備忘錄寫出來(lái)。
參考的是***的Hibernate 3.2.6GA API文檔,還吸收了Hibernate牛人(夏新)寫的書和翻譯中文開(kāi)發(fā)手冊(cè)的精華。
1、Configuration/SessionFactory/Session
Configuration實(shí)例代表了一個(gè)應(yīng)用程序中Java類型 到SQL數(shù)據(jù)庫(kù)映射的完整集合. Configuration被用來(lái)構(gòu)建一個(gè)(不可變的 (immutable))SessionFactory.
◆SessionFactory是線程安全的,創(chuàng)建代價(jià)很高。
◆Session是非線程安全的,輕量級(jí)的。一個(gè)Session對(duì)應(yīng)一個(gè)JDBC連接,
◆Session的connection()會(huì)獲取Session與之對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接Connection對(duì)象。
◆Session的功能就是操作對(duì)象的,這些對(duì)象和數(shù)據(jù)庫(kù)表有映射關(guān)系。
◆Session操作的對(duì)象是有狀態(tài)的,分三類:
1)自由狀態(tài)(transient): 未持久化,未與任何Session相關(guān)聯(lián),數(shù)據(jù)庫(kù)表中沒(méi)有對(duì)應(yīng)的記錄。
2)持久化狀態(tài)(persistent): 與一個(gè)Session相關(guān)聯(lián),對(duì)應(yīng)數(shù)據(jù)庫(kù)表中一條記錄。
3)游離狀態(tài)(detached): 已經(jīng)進(jìn)行過(guò)持久化,但當(dāng)前未與任何Session相關(guān)聯(lián),數(shù)據(jù)庫(kù)表中曾經(jīng)有一條記錄,現(xiàn)在還有沒(méi)有就不知道了。
游離狀態(tài)的實(shí)例可以通過(guò)調(diào)用save()、persist()或者saveOrUpdate()方法進(jìn)行持久化。持久化實(shí)例可以通過(guò)調(diào)用 delete()變成游離狀態(tài)。通過(guò)get()或load()方法得到的實(shí)例都是持久化狀態(tài)的。游離狀態(tài)的實(shí)例可以通過(guò)調(diào)用 update()、0saveOrUpdate()、lock()或者replicate()進(jìn)行持久化。游離或者自由狀態(tài)下的實(shí)例可以通過(guò)調(diào)用 merge()方法成為一個(gè)新的持久化實(shí)例。
2、Session的save()/persist()/update()/saveOrUpdate()/merge()/delete()方法
◆save()方法將指定對(duì)象保存,插入表中一條數(shù)據(jù);
◆persist()方法將指定對(duì)象保存,插入表中一條數(shù)據(jù),我還沒(méi)發(fā)現(xiàn)它和save方法有什么特別之處。
◆replicate()方法完全使用給定對(duì)象各個(gè)屬性的值(包括標(biāo)識(shí)id)來(lái)持久化給定的游離狀態(tài)(Transient)的實(shí)體,很暴力啊,其中還需要指定存儲(chǔ)模式(有四種保存策略供選擇)。
◆update()方法將指定對(duì)象更新,更新表中一條數(shù)據(jù);
◆saveOrUpdate()方法接收一個(gè)實(shí)體對(duì)象,根據(jù)實(shí)體對(duì)象的id判斷是否已經(jīng)存在進(jìn)行保存或更新操作,這樣保存和更新方法就統(tǒng)一了;
◆merge()方法將給定的對(duì)象的狀態(tài)復(fù)制到具有相同標(biāo)識(shí)的持久化對(duì)象上。
◆delete()方法將指定對(duì)象刪除,刪除表中一條數(shù)據(jù);
特別注意:為了使用saveOrUpdate()方法,在由定義映射文件時(shí),通過(guò)設(shè)定
網(wǎng)頁(yè)題目:詳細(xì)描述Hibernate3實(shí)踐
文章來(lái)源:http://m.fisionsoft.com.cn/article/cdipsdd.html


咨詢
建站咨詢
