假设我有一个域模型,其中3个对象互动,预订,车辆和 Fleet 。舰队有很多车辆,每辆车可以有很多预订。例如
Fleet -1--*- Vehicle -1--*- Reservation
如果我希望 Fleet 拥有方法 getMostPopularVehicle(),我可以让它迭代每辆车并计算预订数量。
如果我想为持久性引入ORM,我应该(1)让getMostPopularVehicle()调用数据层方法来填充Fleet,Vehicles和Reservations,然后再像之前一样进行迭代吗?或者我(2)现在只是直接查询数据库以获得数据层方法中最受欢迎的车辆?
我的想法是(1)是正确的,但数据库查询可以非常有效。也许我接近这一切都错了?
答案 0 :(得分:1)
两种方法都有效。这取决于你想要达到的目标;如果您可以通过发布(HQL或JPQL或任何您支持的ORM)查询(也使用您的域模型)来获得性能,那么执行此操作是非常合法的。
答案 1 :(得分:1)
如果预计这些统计数据随时可用,我可能会选择另外两种方案中的一种,以避免经常执行潜在的重载查询(如果有的话):