获取JPA中依赖实体计数的最佳方法

时间:2017-11-08 16:59:22

标签: mysql hibernate jpa spring-boot

这个问题实际上是针对设计建议的。

情况:我有一个表格Feed,其中包含供稿详细信息,例如说明创建日期,Feed所有者等。我有两个关联的表格,其中包含“Likes”,“Comments” 。喜欢包含Feed和喜欢Feed的用户的映射,评论包含评论以及feedId和userId

我必须提取特定Feed的Feed详细信息以及以下详细信息:

  1. 喜欢的数量
  2. 评论数
  3. 请求Feed详细信息的用户是否喜欢Feed
  4. 我有两种方法可以实现这一点但不确定哪种方法更适合JPA以及为什么或有其他方式

    解决方案1:

    我使用存储过程获取Feed详细信息,该存储过程将使用feedId和userId,并将返回Feed详细信息以及其他数据。由于它将包含多个查询,因此使用存储过程,我可以在单个数据库调用中获取所有数据

    解决方案2:

    我使用Feed获取entityManager.find()个详细信息,并使用条件查找喜欢的数量,评论以及用户是否喜欢Feed。这将需要4次调用数据库。

    如果我获取完整的Feed对象并获取喜欢的ugin feed.getLikers()并填充用户喜欢的计数和检查,那么如果喜欢者数量巨大则可能代价很高。

    我不认为使用存储过程是不错的选择,当我使用任何ORM(这里是JPA)时,它只会给我一个不是实体的List(如果我错了,请纠正我)。进行4次调用以填充整个实体也不是好办法。

    请建议解决此问题的最佳方法。

    仅供参考,如果需要:我使用JPA和Spring启动

0 个答案:

没有答案