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

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


咨詢
建站咨詢
