Posted on 2007-07-04 16:49
G_G 閱讀(1033)
評論(5) 編輯 收藏 所屬分類:
hibernate
07-11-9
由于我對hibernate理解的深入,在次我來終結下這篇文章的不足的地方(好多人在拍磚哈)
對復雜的邏輯這樣開和關太冒失了。
? 在普通的邏輯方法中 session都疊加的用上2次以上 這就要對一級緩沖的管理。事物的使用也是一樣。
下載:?
http://www.tkk7.com/Files/Good-Game/hibernateUtil.rar簡單的繼承包 :?
??????繼承
DBManage 類? 把?數據包裝類 管理 (?填充 ,?set 等 ) 后就直接放到里 insert , update , delete 方法中
???????? 填充可看看這個,很有實用價值 ----> (?當 Form -> Bean? 或?Bean ->Bean ?) 例子很簡單但想法表明??
???????????????????????????????????????????????????????????????????????????
??????繼承
DBSelect 類 為 select? 這只是 把 Query 給出 簡單用法 是
??????????????????????????????????????????????????????Query?qu =???dao.getQueryBegin(? "?HQL?"?);
??????????????????????????????????????????????????????????????qu.add .....
??????????????????????????????????????????????????????List li = dao.getQuertyEnd(?qu?);
?????擴展:? Criteria? cr , SQLQuery , 等等 把她包裝成 各個 dao 中 不是 很 偷懶???? : )
Eg :??? ?
extendsDBBasic 類
????public?List?select(String?id,String?time)
{

????????List?list?=?new?ArrayList();
????????
??????? Query qu = getQueryBegin("HSQL");?? //繼承帶來的好處
????????
??????? .add..........
?????????????
?????? List list = getQuertyEnd(qu); ?? //繼承結束
????????
????????return??list;
????} 缺點: 最好不要static?在一時間點上 此類不能支持多線程?
???????????????basicBegin? basicEnd ?方法 (?我找不到好的方法 要的話來個 連接池什么的 大家討論西西吧!!

??)
?????????????? sess 為全局的 session 要是 寫成?baseicBegin 返回的話 感覺下面的還有很多要寫 什么 close 啊...
?????????????????????sess 也是缺點的所在? 當然大家 有什么想法 改下 或自己來個 小包裝 我只是?

??拋磚引玉
???
????private?Map?transmap?=?new?HashMap();
????protected?Session?basicBegin(){
????????Session?sess?=?SessionManager.currentSession();
????????try?{
????????????transmap.put(?sess,?sess.beginTransaction()?);
????????}catch(Exception?e){System.out.println(e);}
????????return?sess?;
????}
????
????protected?void?basicEnd(Session?sess){
????????try?{
????????????((Transaction)transmap.remove(sess)).commit();
????????}catch(Exception?e){System.out.println(e);}
????????finally{
????????????sess?=?null?;
????????????SessionManager.closeSession();
????????}
????}
心得: 多包裝多快樂