lazy和session就是有矛盾的。
如果你不关闭,那么会出现泄漏(数据库资源)
如果你关闭,则不能读取lazy的数据你说该怎么办呢?这是你设计问题,既然你一定要用那个数据,为何设置为lazy? 个人认为,你应该重新考虑你的设计。

解决方案 »

  1.   

      这个系统使用人数会在1000左右.  没有用到Spring .  我想知道是不是有这样一种机制可以自动管理Session  .在适当的时候回收session. 比如写个 request监听 在request销毁时关闭session  ?   或者还是说我要平衡lazy的深度. 比如只是到User.dept为止  我才刚开始用Hibernate . 对于怎么设计不太明白 .   
      

  2.   

    还是设置为lazy为好,因为你要用到User.dept.messages ,但别的地方可能不需去取。
    你可以在关闭session前手动取一下,对应的sql就会执行。
      

  3.   

      比如 ,  在需要时DAO内手动获取一下. ?    可能我明白了.  我先试试
      

  4.   

    喜欢J2EE的朋友欢迎加入QQ群36643256,学习、交流,共同探讨技术与工作、共享信息、结交朋友
      

  5.   

    我也刚接触hibernate,设置lazy会占用一些缓存,session在最后会自动关闭
      

  6.   

    设置延时加载很麻烦,是我的话就不得用,会注意很多问题,
    解决的方法也有很多,
    1、写HQL语句可以,
    2、在web.xml中配置中使用Open Session In View模式
         Open Session In View模式:是一种应用于Hibernate与Spring集成时
         解决Hibernate延迟加载的问题。
      

  7.   

    有没有搞错,你说的好像是两个不同的Session吧
    User.dept.messages 要用的是会话javax.servlet.http.HttpSession
    HibernateSessionFactory.getSession()要用的是org.hibernate.Session
    这两个session根本没什么关系