gpt4 book ai didi

java - 在 Spring/Hibernate 中加载社交图 - Hibernate session 持续时间

转载 作者:行者123 更新时间:2023-12-01 05:26:27 25 4
gpt4 key购买 nike

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

我的主要问题是:如果我以这种方式查找一个人,然后将该人对象与一个长期存在的 HTTP session 关联起来(例如 session.setAttribute("user", person)),那么究竟会存储什么?如果我尝试通过 session 关联对象访问用户图中的某个人,Hibernate 会因为 Hibernate session 已过期而崩溃吗?

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

谢谢。

最佳答案

通常,Hibernate session 在请求内开始和结束。

如果您在 session 中存储 Person 对象,则仅存储该对象,Hibernate session 将结束。

即使可以,将 Hibernate session 与 session 绑定(bind)的想法也将是一个非常糟糕的主意,因为:

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

我认为你最好使用 Open Session in View模式和 OpenSessionInViewInterceptor 。这样,您的关联将在您需要时延迟加载,但您不会保持大量连接打开。

关于java - 在 Spring/Hibernate 中加载社交图 - Hibernate session 持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com