当前位置: 首页 > 知识库问答 >
问题:

我应该有一个对象作为属性或原始id吗?

萧鸿轩
2023-03-14

这个问题可能是基于观点的,但我想知道我应该使用哪种原则。这是我的情况。

我有一门课叫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列表

我想知道的是,它应该是这样的,还是简单地用字符串用户标识替换用户对象,然后从单例类中获取将在Hashmap中的用户对象。

有什么想法吗?


共有2个答案

竺国兴
2023-03-14

参与者列表和travelCreator是否符合TravelOffer的逻辑?如果是,通过userIdTravelofferUser分离是没有意义的。首选id方法的少数几种情况之一是,如果我们确实需要松耦合(例如,当我们需要根据id从另一个系统进行查找时),这意味着TravelOffer不需要用户,但这里的情况并非如此。如果TravelOfferUser都是同一个系统的一部分,最好保留对对象的引用而不是id。

夹谷奇
2023-03-14

我不认为存储ID而不是引用是个好主意。这将使代码更加复杂,因为每次您需要与TravelOffer关联的用户时,您都必须调用返回引用的DAO。只要Java使用引用,你就不必担心内存。其他事情:参与者完全适合TravelOffer,所以它不应该被分割。

比较一下:

travelOffer.getTravelCreator().getName()
userDao.getUser(travelOffer.getTravelCreatorId()).getName()

第一个对我来说看起来更好。

你的问题与对象关系映射有关吗?

 类似资料:
  • 问题内容: 我正在尝试从解码为PHP对象的JSON数据中获取一个属性。这只是一个YouTube数据API请求,它返回具有内容对象的视频对象。 在做 抛出“意外的T_DNUMBER”-这很合理。但是,如何获得数字属性的值? 我确定我应该知道这一点。提前致谢。 问题答案: 这应该工作:

  • 问题内容: 传递道具时,应该将整个对象传递到子组件中,还是应该先在父组件中单独创建道具,然后再将这些道具传递给子组件? 传递整个对象: 单独创建首先需要的道具: 哪一个是首选,并且取决于它,我应该使用哪个作为量规? 问题答案: 您应该更喜欢第二个示例,以单独传递道具。在这里,您可以清楚地看到传递了哪些参数,并可以与期望的参数快速比较。这使人们之间的协作更加容易,并使应用程序的状态更加清晰。 我个人

  • 这可能吗?我想将JSON反序列化到POJO结构中,但除此之外,还要在POJO(或子POJO)中保存原始JSON的副本。例如,假设我有以下结构: 现在我有一套简单的两个POJO: 除了正确设置pojo字段之外,是否还可以使用类的完整JSON设置中的? 虽然我可以用自定义方法重新创建它,但我没有映射的任何额外JSON字段都会丢失,我想保留这些字段以用于异常日志记录(即,我需要上游系统发送的原始JSON

  • 这是我的代码: 我想将的值设置为,我该怎么做?我试过,

  • 我试图创建一个类来保存数量可变的项(它们本身就是另一个类对象)。 我有第二课: 然后类1包含类2的数组: 我想做的是: 第一行设置myQuotes。Curr是没有问题的,但是当我试图在数组中设置一个值时,下一行错误与运行时91对象变量或块变量未设置 有没有关于我做错了什么以及如何设置类数组中元素的值的指针? 提前谢谢!

  • 我的管道选项如下 ImportOptions当前接受input_table作为参数。 但是运行管道会给我一个如下所示的错误 我正在使用下面的命令构建模板。 python-m main --runner DataflowRunner --project test-project --region=europe-west1 --staging_location gs://test/staging_py