hibernate+struts結(jié)合簡(jiǎn)單例子
作者:雨傘(geezer)
2004/11/12
上次介紹了hibernate的基本知識(shí),現(xiàn)在我們將它用在實(shí)際項(xiàng)目開(kāi)發(fā)中,
我們用struts與它結(jié)合來(lái)做一個(gè)簡(jiǎn)單的應(yīng)用。例子所需要的lib文件我都沒(méi)有放進(jìn)去,因?yàn)樘罅?壓縮以后近10M)論壇不讓上傳,呵呵,你們自己把struts與hibernate的jar文件放進(jìn)去吧。
配置環(huán)境:
HIBERNATE 2.1(上次碰到有朋友因?yàn)榘姹静煌勰チ舜蟀胩?,這次注重了)
STRUTS 1.1
JBUILDER X
MySQL 4.1.7
其實(shí)hibernate與struts結(jié)合起來(lái)是很不錯(cuò)的選擇,而且使用與配置起來(lái)都簡(jiǎn)單,幾步就完成了。
例子壓縮包里一共有5個(gè)java類(lèi)文件(BeanItem.java,h_bean.java,h_connection.java,Init.java,MainServlet.java),
BeanItem.java是一個(gè)Bean,從數(shù)據(jù)庫(kù)取出結(jié)果以后創(chuàng)建相應(yīng)總記錄數(shù)的BeanItem數(shù)組,然后再壓入request對(duì)象中,最后利用RequestDispatcher(直接用ActionMapping對(duì)象的findForward方法也可以,只要在struts-config加了<forward>標(biāo)簽既可)傳會(huì)jsp頁(yè)面(ok.jsp)。
h_bean.java是hibernate與數(shù)據(jù)庫(kù)表映射的類(lèi),因?yàn)樯洗挝乙呀?jīng)介紹過(guò)了hibernate的基本知識(shí)所以這里就不解釋了。
h_connection.java是治理hibernate的類(lèi),取sessionFactory用getConnection方法,注重里面有一個(gè)static塊,里面查詢(xún)JNDI樹(shù)得到綁定的SessionFactory實(shí)例。
Init.java是Struts的一個(gè)擴(kuò)展類(lèi),繼續(xù)自PlugIn,將這個(gè)類(lèi)加進(jìn)Struts的配置文件(struts-config.xml里的<struts-config>里加上
<plug-in className="database.Init" />這一行既可),以后每次啟動(dòng)服務(wù)器的時(shí)候都會(huì)先執(zhí)行這個(gè)類(lèi),當(dāng)然只執(zhí)行一次,因?yàn)閔ibernate取SessionFactory的時(shí)候要花久一點(diǎn)的時(shí)間,所以為了不每次使用時(shí)都去重新生成SessionFactory,我們將它改成PlugIn,然后綁在目錄樹(shù)中,這樣上下文其他地方需要用到的時(shí)候直接lookup就可以了。里面有init與destroy方法,也就是說(shuō)在容器停止的時(shí)候可以自動(dòng)在destroy方法里刪除。(好象有點(diǎn)羅嗦了
)
MainServlet.java是Struts的Action子類(lèi),例子里的操作都在這里完成,包括取SessionFactory,取數(shù)據(jù),轉(zhuǎn)向等等。
為了與struts結(jié)合使用,這里需要增加一個(gè)hibernate.cfg.xml文件(其實(shí)有好幾種方法,這里只講這一種常用的),放在classes目錄下,注重里面的
<mapping resource="database/h_bean.hbm.xml"/>
每一個(gè)表的映射都要添加進(jìn)這個(gè)文件里,新增一行既可。
例子下載:http://www.phpx.com/happy/attachment.php?s=&postid=656452
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注