读书人

Hibernate的Session不会自动封锁

发布时间: 2012-08-25 10:06:20 作者: rapoo

Hibernate的Session不会自动关闭

做了一个SSH集成作为开发环境,Service层只是注入了sessionFactory,没有配置事务管理。

发现进行几次操作后就会当掉,但是Tomcat服务没有中断。

?

我首先鉴定是连接没有释放,可能是连接池太小吧,我设置大了仍然不管用。

我想着可能是因为连接是需要手动释放的,于是进行手动关闭来进行验证:

?

事务均采用PROPAGATION_REQUIRED

?

然后每个服务类都配置一个代理对象:

?

在配置Struts2的Action时需要服务类都是用代理对象:

?

这样,每次操作都在不同的事务中,一个事务结束就会由Spring来处理这个已经结束的会话。

?

但是还有一个问题,在服务层你的会话结束了,但是在前台可能使用是一个Hibernate代理对象,就是说没有实际去查询数据,这就需要你的对象不能进行懒加载。

?

查询时在服务层直接把对象查询出来,不然你到JSP页面去取值时会报错

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

?

当然我这只是简单配置下做个测试,对于Spring的事务配置那是有很多种方式的,回头我再总结一下给大家分享!

读书人网 >编程

热点推荐