读书人

hibernate session 过滤器统制

发布时间: 2012-11-04 10:42:41 作者: rapoo

hibernate session 过滤器控制

最近做一个公司项目的Demo,使用技术为jsp+dwr+hibernate,因为该Demo中所用的表多,有一对一,一对多和多对一的关系,所以利用hibernate的延迟加载(lazy="true")对性能的提高相当重要,但随之带来的session管理更为重要,弄不好常出现延迟加载异常,在这里我利用了Filter 来处理session的close的,相关代码如下:

?

1.HibernateSessionFactory.java(Eclipse自动生成,通过ThreadLocal将session的非线程安全变成安全)

?HibernateSessioniFactory主要负责session的开和关。

?

2.HibernateSessionFilter(要编写的过滤器,主要处理session的关闭)

public class UserDao  implements BaseDao {private static final Logger log = Logger.getLogger(UserDao.class);    private  Session session  ;   public UserDao(){       log.info("UserDao construct is running") ;           session = SessionFactory.getSession() ;    }    @Overridepublic boolean save(Object o) {log.info("UserDao save is running ");boolean flag = false ;Transaction tran = null;try {tran = session.beginTransaction();session.save(o);tran.commit();flag = true ;} catch (Exception e) {log.error("error save user");flag = false ;if (tran != null) {try {tran.rollback();} catch (HibernateException e1) {log.error("save Transaction rollback is error "+e1.getMessage()) ;}}e.printStackTrace();}finally{//session.close() ;//这里就不需要在关闭session直接交给filter来处理}return flag ;}}

??? 以上是本人的学习总结,有误之处请多多指教,希望对刚学hibernate的同志们有所帮助。

?

?

?

1 楼 ariyue 2008-11-07 高手,学习中!

读书人网 >软件架构设计

热点推荐