论坛首页 入门讨论版 Hibernate

一个关于hibernate session的关闭问题

浏览 293 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2008-04-17
我的问题是当session2关闭后"Admin admin1 = adminDAO.findById(id);"仍能从数据库中取得记录,并返回
这是否意味这存在未关闭的session,而导致系统资源不释放!

///////////////////////////   用于测试    ////////////////////////////////

Admin admin ;

Session session2 = HibernateSessionFactory.getSession();

Transaction tra2 = session2.beginTransaction();

try{

   admin = adminDAO.findById(id);
   tra2.commit();
   session2.close();

}catch(HibernateException e){
   if (tra2!=null) {

       tra2.rollback();
   }
   throw e;
}

Admin admin1 = adminDAO.findById(id);

return admin1;

///////////////////////////////////////////    adminDAO 部分内容(由myeclipse映射)    ///////////////////////////
public Admin findById(java.lang.Integer id) {
  log.debug("getting Admin instance with id: " + id);

       try {

   Admin instance = (Admin) getSession().get("orm.Admin", id);
   return instance;

       } catch (RuntimeException re) {
  
            log.error("get failed", re);
   throw re;

       }
}
   
最后更新时间:2008-04-17
问题在这里:adminDAO.findById(id);
你的DAO里面肯定又打开过session
   
0 请登录后投票
最后更新时间:2008-04-18
谢谢楼上的回复,我想请教大家在用myeclipse开发时,也是用它自动生成的dao吗,还是手写代码,如果是使用自动映射出的dao有没有出现,在项目中tomcat(我使用的应用服务器是tomcat)内存占用过多而不回收的情况。
   
0 请登录后投票
最后更新时间:2008-04-22
感谢楼上回复,我机子上有个JProfiler,先用用看,刚才有测试了下,添加了50条记录,访问100多个连接,内存从服务器启动的59M,增加到107M,而且最大的问题是,我在资源管理器上看到tomcat的内存占用值与内存使用峰值总是一样的,就是内存有增无减,也不可能是我程序里session都没关闭啊,为什么就没有一点回收的迹象
   
0 请登录后投票
最后更新时间:2008-04-22
添加了50条记录,访问100多个连接,

添加一条,open两次?
   
0 请登录后投票
论坛首页 入门讨论版 Hibernate

跳转论坛:
JavaEye推荐