在具有两种类型的实体(父级和子级)的场景中:
父母-@OneToMany Collection孩子;
默认设置是对子级集合进行延迟加载。这种模式对少数儿童非常有效,但是如果这个数字很大,这似乎是不可持续的。因此,在某些情况下,我认为孩子的数量会很大,因此我使用了分页的服务方法(例如“
getChildren(父父母,int偏移量,int计数)”)。
问题是:这是处理此类情况的最佳方法吗?还是我错过了什么?
谢谢,皮奥特
这种模式对少数儿童非常有效,但是如果这个数字很大,这似乎是不可持续的。
我要说的是,这完全取决于您想对他们做什么,但是在大多数情况下,这是对的。
因此,在某些情况下,我认为孩子的数量会很大,因此我使用了分页的服务方法(例如“ getChildren(父父母,int偏移量,int计数)”)。
如果您需要显示(可能非常)大量的结果 进行浏览,
则分页是一种非常自然的方法。人类通常不想要或不需要所有记录,而且他们无论如何也无法处理大量结果。应用程序必须立即处理所有结果的情况当然有所不同,但是JPA可能根本不适合它们。
问题是:这是处理此类情况的最佳方法吗?还是我错过了什么?
IMO,这绝对比通过调用获得的整个集合提供结果页要好得多parent.getChildren()
,它将节省一些数据库,网络,应用程序服务器资源。
您可能考虑的另一件事是限制搜索时的最大结果数。而不是分页10个结果(到底是谁来浏览?),(至少就我的经验而言)通常要求用户执行限制性更强的搜索,即添加搜索条件,直到结果数量变得可人工管理为止。不过,这与您最初提出的问题有些不同。
问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使
问题内容: 我一直遇到这个问题: 我想让休眠管理一个表,该表代表一个集合的集合。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的休眠代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正常,但是从数据库角
问题内容: 我在映射类的嵌入式属性时遇到麻烦。我创建了一些类,这些类与我试图说明的类相似。基本上,我有一个使用继承的@Embeddable类层次结构。顶级类“零件号”仅具有一个属性,扩展类未向“零件号”类添加任何属性,它们仅添加了一些验证/逻辑。 这是我的意思: 部分 零件号 福特PARTNUMBER 高贵的零件编号 当然这是行不通的,因为Hibernate忽略了继承层次结构,并且不喜欢PartN
问题内容: 是否可以对 不是标识符/不是复合标识符一部分的 某些列使用DB序列? 我正在将hibernate用作jpa提供程序,并且我有一个表,其中包含一些生成的值(使用序列)的列,尽管它们不是标识符的一部分。 我想要的是使用序列为实体创建新值,其中序列的列 不是 主键(的一部分): 然后,当我这样做时: 该ID将被生成,但该属性也将由我的JPA提供程序生成。 为了清楚起见:我希望 Hiberna
问题内容: 如果我能以某种方式将这两个框架结合在一起,那就太酷了。 单击Primefaces数据表上的下一个或上一个按钮将触发查询,从而使用JPA限制查询结果。 同样,也许通过某种机制,primefaces组件也可以从另一个JPA选择计数查询中获取总页数。 有没有关于如何将它们投入工作的示例? 请分享您的经验。 谢谢 ! 问题答案: 您可以使用LazyDataModel。在此示例中,我将使用Net
问题内容: 也许这是一个愚蠢的问题,但我在文档中找不到答案:如何使用JPA2为CriteriaQuery设置限制? 谢谢 问题答案: CriteriaQuery不是可执行查询。您需要先使用创建一个TypedQuery 。然后,您可以设置最大结果并执行它。