Java 在Spring/Hibernate中加载社交图-Hibernate会话持续时间

Java 在Spring/Hibernate中加载社交图-Hibernate会话持续时间,java,spring,hibernate,Java,Spring,Hibernate,我的应用程序使用社交图。每个person对象都有一个person所连接的其他人的多对多列表。我的信念是,通过使用@manytomy(fetch=FetchType.LAZY),直到/除非我对集合执行操作,否则不会查找我的列表 我的主要问题是:如果我以这种方式查找person,然后将person对象与一个长期存在的HTTP会话(例如session.setAttribute(“user”,person))关联,那么存储的究竟是什么?如果我试图通过会话关联对象访问用户图形中的某个人,是否会因为Hibe

我的应用程序使用社交图。每个person对象都有一个person所连接的其他人的多对多列表。我的信念是,通过使用@manytomy(fetch=FetchType.LAZY),直到/除非我对集合执行操作,否则不会查找我的列表

我的主要问题是:如果我以这种方式查找person,然后将person对象与一个长期存在的HTTP会话(例如session.setAttribute(“user”,person))关联,那么存储的究竟是什么?如果我试图通过会话关联对象访问用户图形中的某个人,是否会因为Hibernate会话已过期而导致Hibernate呕吐

可能这是因为我真的不明白Hibernate会话在Spring MVC中何时开始和结束,所以如果有人想帮助解释这一点,那就太好了(在服务级别使用@Transactional,在DAO级别使用getHibernateTemplate)


谢谢。

通常,休眠会话在请求中开始和结束

如果在会话中存储
Person
对象,则仅存储该对象,休眠会话将结束

即使是这样,将Hibernate会话绑定到会话的想法也是一个非常糟糕的想法,因为:

  • 会话下面是一个JDBC连接,因此您需要为每个HTTP会话(每个用户)保持一个单独的JDBC连接打开,这将很快遇到资源限制

我想你最好还是有一个图案和图案。这样,您的关联将在需要时延迟加载,但您不会保持大量连接处于打开状态。

谢谢。我正在使用OpenSessionInviewWinterCeptor,它工作正常。我只是想找出将用户信息与长寿命http会话相关联的最佳方式,这种方式可以很好地处理Spring和Hibernate。