我在数据库中有一个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;
}
答案 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是必要的,使用它没有问题。这并不违反良好做法。