
十六、Hibernate與JDBC的區(qū)別
1、hibernate和jdbc主要區(qū)別就是,hibernate先檢索緩存中的映射對(duì)象( 即hibernate操作的是對(duì)象),而jdbc則是直接操作數(shù)據(jù)庫(kù).
2、Hibernate是JDBC的輕量級(jí)的對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架。Hibernate可以用在任何JDBC可以使用的場(chǎng)合
3、Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。
4、如果正確的使用JDBC技術(shù),它的執(zhí)行效率一定比hibernate要好,因?yàn)閔ibernate是基于jdbc的技術(shù).
5、JDBC使用的是SQL語(yǔ)句,Hibernate使用的是HQL語(yǔ)句,但是HQL語(yǔ)句最終還會(huì)隱式轉(zhuǎn)換成SQL語(yǔ)句執(zhí)行。
十七、、Hibernate中的兩大配置文件
*.hbm.xml:主鍵生成策略,映射關(guān)系,一對(duì)多,一對(duì)一的關(guān)系。
十八、Hibernate事務(wù)處理
開(kāi)啟事務(wù) session.beginTransaction();
執(zhí)行相關(guān)的操作,如果成功則session.getTransaction().commit();
執(zhí)行操作失敗則 session.getTransaction.rollback();
十九、Hibernate的三種狀態(tài)以及狀態(tài)的轉(zhuǎn)換
Transient(臨時(shí))
new 一個(gè)初始化對(duì)象后,并沒(méi)有在數(shù)據(jù)庫(kù)里保存數(shù)據(jù),處于臨時(shí)狀態(tài);
Persistent(持久化)
當(dāng)執(zhí)行save()方法,調(diào)用session.close()方法之前,內(nèi)存中的對(duì)象與數(shù)據(jù)庫(kù)有 對(duì)應(yīng)關(guān)系處于持久化狀態(tài);
Detached(托管/游離)
當(dāng)執(zhí)行session.close()之后,處于托管狀態(tài);
狀態(tài)的轉(zhuǎn)換
處于托管狀態(tài)下,調(diào)用update()方法后,轉(zhuǎn)換為持久化狀態(tài);
在持久化狀態(tài)下,執(zhí)行delete()方法后,轉(zhuǎn)換為臨時(shí)狀態(tài);
在未初始化對(duì)象之前,調(diào)用get(),load(),find(),iterate()之后,直接進(jìn)入持久化 狀態(tài)。
二十、分頁(yè)步驟
前臺(tái)封裝一個(gè)顯示分頁(yè)的組件
查詢(xún)總條數(shù)
后臺(tái)封裝分頁(yè)工具類(lèi),計(jì)算開(kāi)始位置、結(jié)束位置、總頁(yè)數(shù)
后臺(tái)寫(xiě)支持分頁(yè)的sql語(yǔ)句
前臺(tái)包含分頁(yè)組件,實(shí)現(xiàn)分頁(yè)效果
注意:
查詢(xún)總條數(shù)的where和查詢(xún)列表信息的where條件要保證一致。