这个问题可能基于意见,但我想知道我应该使用哪种原则。这是我的情况。
我有一个名为TravelOffer的课程。这个类看起来像这样:
public class TravelOffer
{
private final long id;
private final StartZone startZone;
private final EndZone endZone;
private final List<Waypoint> waypoints;
private final Period startOff;
private final User travelCreator;
private final List<User> participantsList;
private final TravelExtras travelExtras;
private final CandidateApprovement candidateApprovement;
private int numberOfSeats;
private double pricePerPerson;
private Luggage luggage;
private boolean additionalLuggageTransport;
private String additionalDescription;
}
如您所见,有以下属性:
User tavelCreator
和List<User> participantsList
我想知道的是它应该是这样还是只是用 String userId 替换User对象,然后从单例类替换以获取将在Hashmap中的User对象。< / p>
有什么想法吗?
答案 0 :(得分:1)
我不认为存储ID而不是引用是一个好主意。它会使代码更复杂,因为每次你需要一个与TravelOffer关联的用户时,你必须打电话给你的让他们说DAO返回参考。只要Java使用引用,您就不必担心内存。其他事情:参与者完全适合TravelOffer,因此不应该分开。
比较一下:
travelOffer.getTravelCreator().getName()
userDao.getUser(travelOffer.getTravelCreatorId()).getName()
第一个对我来说看起来更好。
您的问题是否与对象关系映射有关?
答案 1 :(得分:1)
participantsList
和travelCreator
在逻辑上是否适合TravelOffer
?如果是,那么通过Traveloffer
建立User
和userId
来解除它是没有意义的。如果我们真的需要松散耦合(比如当我们需要根据Id从另一个系统进行查找时),这意味着TravelOffer
不需要 User
这不是这里的情况。如果TravelOffer
和User
都是同一系统的一部分,那么最好保持对象的引用而不是id。