面試遇到這個(gè)問題,搞了半天就這些東西
Hibernate.cfg.xml文件必須被放在你的classpath里。
在你的程序里使用hibernate必須有下面幾個(gè)步驟:
1、建立一個(gè)Hibernate configuration對象
2、使用Hibernate configuration對象來建立一個(gè)Hibernate factory對象。
3、使用Hibernate factory對象來建立一個(gè)Hibernate session對象。
4、使用Hibernate session對象來開始一個(gè)事務(wù)(可選)
5、使用Hibernate session對象來建立、讀取、更新、刪除數(shù)據(jù)庫里的數(shù)據(jù)
6、提交事務(wù)(可選)
7、關(guān)閉session
Hibernate最佳實(shí)踐是建立和緩存Hibernate factory來提高性能。所以我們最好在第一步和第二步建立一
個(gè)Struts plug-in 來在servlet context中緩存Hibernate factory。如List5所示:
Hibernate是一個(gè)功能非常強(qiáng)大的產(chǎn)品,還有一些未知的功能留給你們?nèi)グl(fā)現(xiàn)。我們簡單的例子只是關(guān)于
讀這個(gè)行為,但是CRUD里的其它功能也是一樣的簡單。功能性的更新和讀取指定對象一樣簡單,調(diào)用
JavaBean setter,調(diào)用session的commit方法。Hibernate負(fù)責(zé)幫你生成SQL語句并且更新數(shù)據(jù)庫。一個(gè)刪
除也是非常的簡單—session.delete(element)便是所有要做的!最后建立只是需要初始化對象,調(diào)用
setters方法,然后調(diào)用session.save(element)。
Hibernate最佳實(shí)踐推薦緩存Hibernate factory對象。我們選擇通過Struts plug-in來建立并且緩存
factory。你也可以選擇使用其它方法在你的類里緩存它。
雖然這個(gè)摘錄能很好的滿足你的需要,它還有其它的一些缺點(diǎn)。第一,我們在Struts Action里使用了
Hibernate。遷移到其它的持久層框架上便將需要我們改變每個(gè)使用Hibernate的Action。第二,我們的持
久層緊密的與表示層連接。這種關(guān)聯(lián)使我們在其它表示層機(jī)制中沒有重新使用持久層邏輯的機(jī)會(huì),例如批
處理程序。
雖然有許多改進(jìn)的空間,當(dāng)你不需要重用表現(xiàn)層的時(shí)候,這個(gè)摘錄還是很適合的。