这是你的问题:
“但我只是不知道这个框架,现在不想学习它(我只是初学者)。”
如果事情自动发生就好了,我们甚至不需要编写代码,但可惜事情并不总是好的。使用技术没有任何意义,但不想付出努力/学习使用它的机制。
有很多选择。
1) 在视图中打开会话。花时间来做这件事。这并不难。它的作用是在请求的生命周期内保持会话打开,因此如果您访问惰性关系,会话就在那里并且可以加载数据。@Danny.lesnik 的回答是不正确的——从我读到的内容来看,他暗示 OSiV 只是让联想变得渴望,这不是它的作用。如果不想用Spring,或许可以找个手工实现OSiV模式的例子,应该不会太差,大概是个不错的学习体验。
2) 编写自定义映射/hql,以便加载给定场景所需的所有数据。这并不是说加载所有对象;您可以从表中加载某些字段,以使提取尽可能精简。例如,您可以使您的 hibernate/jpa 映射/注释变得惰性,然后编写一个自定义 DAO 方法,该方法仅从连接中跨表的列中获取某些字段。使用一些调整/缓存/索引可以非常快。
在这两个选项中,1 更容易,您只需要查看文档,它主要是配置。请注意,OSiV 有其自身的复杂性,例如,如果您修改数据但向用户呈现结果时出现异常,并且您的事务以某种方式配置,您的修改将被回滚。选项 2 的优点是不需要 OSiV,但会带来所有的复杂性,并且可以让您更好地控制与数据库的交互,但必须做更多的工作。