这种模式适用于少数儿童,但如果数量增长很大,这似乎是不可持续的.
我要说这一切都取决于你想对他们做什么,但在大多数情况下,这是真的.
因此,对于我认为子项数量非常大的场合,我使用了分页的服务方法(比如"getChildren(Parent parent,int offset,int count)").
如果您需要显示(可能非常)大量的结果以进行浏览,则分页是一种非常自然的方法.人类通常不想要或不需要所有记录,但他们无论如何也无法处理大量的结果.应用程序必须立即处理所有结果的情况当然是不同的,但JPA可能根本不适合它们.
问题是:这是处理这种情况的最佳方法吗?还是我错过了什么?
IMO,它肯定比使用您通过调用获得的整个集合提供结果页面要好得多parent.getChildren(),并且它将节省一些数据库,网络,应用服务器资源.
您可能会考虑的另一件事是在进行搜索时限制结果的最大数量.通常(至少根据我的经验)要求用户执行更严格的搜索,即添加搜索条件,直到结果的数量变得人为可管理,而不是分页10⁶结果(谁将要浏览它?).这与你最初的问题有点不同.
像你一样做(也就是说,通过单独的查询加载孩子)可能是最好的解决方案.
还有一些需要考虑的事情:Hibernate可以为集合添加"extra-lazy".使用常规延迟加载时,首次访问时会加载整个集合; 但是在延迟模式下,Hibernate可以根据需要一次加载一些元素.除非您直接使用Hibernate API,否则我认为没有办法访问此功能 - JPA只知道"懒惰"和"渴望".
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |