我一直确信(不知道为什么)给变量添加注释更好,但在浏览Hibernate文档http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection时,我注意到它们倾向于注释方法。所以我应该把我的注解放在方法之前,就像这样:
@Entity
public class Flight implements Serializable {
private long id;
@Id @GeneratedValue
public long getId() { return id; }
public void setId(long id) { this.id = id; }
} 或者这样做更好:
@Entity
public class Flight implements Serializable {
@Id @GeneratedValue
private long id;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
} 或者没有什么不同?
发布于 2010-05-20 04:43:38
正如Péter指出的,您需要选择一种样式并坚持使用它,因为用于@Id注释的样式将用于所有内容。
除此之外,这只是一个品味问题。这两个选项都有效,所以选择你喜欢的那个。有些人更喜欢Hibernate通过方法注入,这样他们就可以在需要时巧妙地改变实现。我更喜欢通过字段注入,因为我发现必须通过getter/setter方法(7行与1行)公开所有属性很麻烦,而99.9%的时间它们将作为简单的变量工作(而且在任何情况下,如果我需要编写自定义setter功能,我都可以切换注释样式)。
两者之间没有性能或功能差异,因此可以选择您喜欢的(或者可能更重要的是,您的团队/工具喜欢的)。
发布于 2010-05-20 04:33:35
对于@Id注释,有一个区别:如果是在getter上,Hibernate会尝试通过常规的getter/setters获取/设置所有类成员,而如果是在成员变量上,Hibernate将直接访问所有成员变量。
换句话说,您不能在同一实体中混合样式。
发布于 2010-05-20 04:33:38
这取决于注释。
一般来说,如果实体具有与字段名匹配的标准getter/setter,那么就没有太大的区别。如果可以选择,我倾向于注释字段,只是因为我发现用方法隐藏注释更难阅读。
https://stackoverflow.com/questions/2869120
复制相似问题