gpt4 book ai didi

java - 在域模型中处理大型集合的好方法 - 使用 JPA/Hibernate ORM?

转载 作者:行者123 更新时间:2023-11-30 06:37:41 25 4
gpt4 key购买 nike

我的域类中有一些 OneToMany 子集合,它们可能会随着时间的推移而增长以容纳数百或(很可能)数千个实例。然而,很多时候 parent 真正需要的只是“第一个” child 或“最后一个” child 或“最大”的 child 。让父实例循环遍历从数据库加载的大量对象似乎效率很低。

另一方面,我不想因持久性问题而污染我的领域模型,并开始不得不在领域类中使用我的 DAO 来执行查询。

我可能会将这些查找放在我的服务方法中,但我真的更喜欢将此登录放在我所属的域中——试图避免“贫血域”反模式。

有没有办法在不直接调用 DAO 的情况下从大型集合中提取“特定”对象?我忽略了一些 JPA ORM 映射功能?

编辑:应用程序是分层设计的,领域模型层在底部——它不依赖于任何其他东西。紧挨着它的是实现 DAO 并依赖于域层的持久层。在它们之上是一个服务层,我试图通过将业务逻辑下推到领域层来保持它尽可能薄。

最佳答案

这里有很多选择

  1. Use lazy-loadingbatch fetching
  2. 使用 HQL 或 Criteria 查询,甚至下拉到 native SQL 来限制结果数量(换句话说,不是浏览集合,而是执行查询以返回您想要的 N 个项目)
  3. 如果caching是一种选择,您可以至少在某些时候避免访问数据库。

关于java - 在域模型中处理大型集合的好方法 - 使用 JPA/Hibernate ORM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160448/

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