Spring与hibernate整合创建web应用的hibernatesession问题

大家好我现在使用Spring与hibernate整合创建web应用,使用了Spring的HibernateTemplate问题来了,我使用hibernateTemplat... 大家好
我现在使用Spring与hibernate整合创建web应用,使用了Spring的HibernateTemplate
问题来了,
我使用hibernateTemplate的get(Class<?> cls, Serializable pk)也就是根据表和主键来查数据的方法的时候,我发现每次我执行一次这样的查找,spring都会给我返回一个新的hibernate session.
首先不论连接数暴涨的问题,在这个项目里我很依赖一级缓存.这样他使得实际上没有了一级缓存,因为他总是会给你一个新的新的hibernate session.

在web.xml里我配置了opensessioninviewfilter,也设置了singlesession为true.依然不见效果
查询很多资料也找不到解决方案.请求指点
对了,事物中这个方法也设置为了readOnly
展开
 我来答
baby怀抱
2013-11-02 · 超过19用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:46.6万
展开全部
  1、Spring 提供了 HibernateTemplate,用于持久层访问,该模板类无须显示打开 Session及关闭 Session。它只要获得 SessionFactory 的引用,将可以智能打开 Session,并在持久化访问结束后关闭 Session ,程序开发只需完成持久层逻辑,通用的操作则由HibernateTemplate 完成。

2、 Spring 提供"每事务一次 Session" 的机制,该机制能大大提高了系统性能,而且 Spring 对 Session 的管理是透明的,无须在代码中操作 Session。

这就是原因了,spring在底层会自动关闭session,没办法控制;如果你要是用session中的数据的话,可以在action中实现(implements session)session,自己在action中定义一个session属性,
public Session session; 接下来在action中接收你查出来的数据,通过session.put("名称",接收到的对象);就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式