这个问题实际上是针对设计建议的。
情况:我有一个表格Feed
,其中包含供稿详细信息,例如说明创建日期,Feed所有者等。我有两个关联的表格,其中包含“Likes”,“Comments” 。喜欢包含Feed和喜欢Feed的用户的映射,评论包含评论以及feedId和userId
我必须提取特定Feed的Feed详细信息以及以下详细信息:
我有两种方法可以实现这一点但不确定哪种方法更适合JPA以及为什么或有其他方式
解决方案1:
我使用存储过程获取Feed详细信息,该存储过程将使用feedId和userId,并将返回Feed详细信息以及其他数据。由于它将包含多个查询,因此使用存储过程,我可以在单个数据库调用中获取所有数据
解决方案2:
我使用Feed
获取entityManager.find()
个详细信息,并使用条件查找喜欢的数量,评论以及用户是否喜欢Feed。这将需要4次调用数据库。
如果我获取完整的Feed对象并获取喜欢的ugin feed.getLikers()并填充用户喜欢的计数和检查,那么如果喜欢者数量巨大则可能代价很高。
我不认为使用存储过程是不错的选择,当我使用任何ORM(这里是JPA)时,它只会给我一个不是实体的List(如果我错了,请纠正我)。进行4次调用以填充整个实体也不是好办法。
请建议解决此问题的最佳方法。
仅供参考,如果需要:我使用JPA和Spring启动