浏览 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; } } 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-17
问题在这里:adminDAO.findById(id);
你的DAO里面肯定又打开过session |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-18
谢谢楼上的回复,我想请教大家在用myeclipse开发时,也是用它自动生成的dao吗,还是手写代码,如果是使用自动映射出的dao有没有出现,在项目中tomcat(我使用的应用服务器是tomcat)内存占用过多而不回收的情况。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-22
感谢楼上回复,我机子上有个JProfiler,先用用看,刚才有测试了下,添加了50条记录,访问100多个连接,内存从服务器启动的59M,增加到107M,而且最大的问题是,我在资源管理器上看到tomcat的内存占用值与内存使用峰值总是一样的,就是内存有增无减,也不可能是我程序里session都没关闭啊,为什么就没有一点回收的迹象
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-22
添加了50条记录,访问100多个连接,
添加一条,open两次? |
|
| 返回顶楼 | |



