在具有两种类型的实体(父级和子级)的场景中:
父母-@OneToMany Collection孩子;
默认值为对子级集合进行延迟加载。这种模式对少数儿童非常有效,但是如果这个数字很大,这似乎是不可持续的。因此,在某些情况下,我认为孩子的数量会很大,因此我使用了分页的服务方法(例如“ getChildren(父父母,int偏移量,int计数)”)。
问题是:这是处理此类情况的最佳方法吗?还是我错过了什么?
谢谢,皮奥特
这种模式对少数儿童非常有效,但是如果这个数字很大,这似乎是不可持续的。
我要说的是,这完全取决于您想对他们做什么,但是在大多数情况下,这是事实。
因此,在某些情况下,我认为孩子的数量会很大,因此我使用了分页的服务方法(例如“ getChildren(父父母,int偏移量,int计数)”)。
如果您需要显示(可能非常)大量的结果 进行浏览, 则分页是一种非常自然的方法。人类通常不想要或不需要所有记录,而且他们无论如何也无法处理大量结果。应用程序必须立即处理所有结果的情况当然有所不同,但是JPA可能根本不适合它们。
IMO,这绝对比通过调用获得的整个集合提供结果页要好得多parent.getChildren(),它将节省一些数据库,网络,应用服务器资源。
parent.getChildren()
您可能考虑的另一件事是限制搜索时的最大结果数。而不是分页10个结果(到底是谁去浏览?),(至少根据我的经验)通常要求用户执行更严格的搜索,即添加搜索条件,直到结果数量变得可人工管理为止。不过,这与您最初提出的问题有些不同。