在类中定义ID属性是一个好习惯吗?

时间:2011-05-10 16:22:06

标签: oop

我在数据库中有一个ID字段,它是一个主键。在课堂上定义它是一个好习惯吗?我将需要密钥来执行更新和其他操作。

我有这个疑问,因为我不确定,但一位教授说这不是一个好习惯。

编辑:

public class Pagina {

  private int id; //<--this is an good practice?
  private String urlOriginal;
  private String urlRedirected;
  private String content;
  private Link[] links;
  private Date updateDate;
  private Date visitDate;
  private boolean visitedLinks;
}

5 个答案:

答案 0 :(得分:3)

如果您的类使用JPA持久保存到数据库,则必须使用JPA。如果没有,那么它仍然非常有用。当它被证明是一件坏事时,很难想到一个例子。

答案 1 :(得分:2)

严格来说,

不幸的是,目前存在的大多数ORM框架都不支持 数据库的主键透明。 Grails与OODBMS db4o一样,但Hibernate之类的却没有。{/ p>

这意味着您要么必须咬紧牙关并在域类中定义id,要么编写一个额外的层来将您的域类包装到您的RDBMS可以与之交谈的内容中,而不会将持久性实现暴露给您的业务逻辑层。

答案 2 :(得分:2)

在Java中,如果使用Map,则将键放在值中通常是多余的。但是,成本通常是微不足道的,因为它就在这里。如果您认为以这种方式对数据建模更容易,那就是我要做的。 (即使你没有一个需要它的框架)

清晰度通常是最重要的考虑因素。

答案 3 :(得分:0)

如果你的模型类可以持久化 - 那么必须定义一些PK模拟。 但它并不总是应该被命名为id - 在Page的情况下它可能是它的例子(但它不是一个好主意)。

你的教授是否以某种方式论证了它?

答案 4 :(得分:0)

根据我的教授,在问题的UML解决方案中,不应该定义Id,因为每个对象都是唯一的,并且不需要标识符属性,但之后,取决于在最终项目中使用哪种技术,Id是必要的,使用它没有问题。这并不违反良好做法。