Posted on 2007-07-04 16:49
G_G 阅读(1028)
评论(5) 编辑 收藏 所属分类:
hibernate
07-11-9
由于我对hibernate理解的深入,在次我来终结下这篇文章的不足的地方(好多人在拍砖哈)
对复杂的逻辑这样开和关太冒失了。
在普通的逻辑方法中 session都叠加的用上2次以上 这就要对一级缓冲的管理。事物的使用也是一样。
下载: http://www.blogjava.net/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();
}
}
心得: 多包装多快乐