首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注解:方法与变量

注解:方法与变量
EN

Stack Overflow用户
提问于 2010-05-20 04:24:43
回答 6查看 3.3K关注 0票数 6

我一直确信(不知道为什么)给变量添加注释更好,但在浏览Hibernate文档http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection时,我注意到它们倾向于注释方法。所以我应该把我的注解放在方法之前,就像这样:

代码语言:javascript
复制
@Entity
public class Flight implements Serializable {
private long id;

@Id @GeneratedValue
public long getId() { return id; }

public void setId(long id) { this.id = id; }
}  

或者这样做更好:

代码语言:javascript
复制
@Entity
public class Flight implements Serializable {
@Id @GeneratedValue
private long id;

public long getId() { return id; }

public void setId(long id) { this.id = id; }
}  

或者没有什么不同?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-05-20 04:43:38

正如Péter指出的,您需要选择一种样式并坚持使用它,因为用于@Id注释的样式将用于所有内容。

除此之外,这只是一个品味问题。这两个选项都有效,所以选择你喜欢的那个。有些人更喜欢Hibernate通过方法注入,这样他们就可以在需要时巧妙地改变实现。我更喜欢通过字段注入,因为我发现必须通过getter/setter方法(7行与1行)公开所有属性很麻烦,而99.9%的时间它们将作为简单的变量工作(而且在任何情况下,如果我需要编写自定义setter功能,我都可以切换注释样式)。

两者之间没有性能或功能差异,因此可以选择您喜欢的(或者可能更重要的是,您的团队/工具喜欢的)。

票数 3
EN

Stack Overflow用户

发布于 2010-05-20 04:33:35

对于@Id注释,有一个区别:如果是在getter上,Hibernate会尝试通过常规的getter/setters获取/设置所有类成员,而如果是在成员变量上,Hibernate将直接访问所有成员变量。

换句话说,您不能在同一实体中混合样式。

票数 2
EN

Stack Overflow用户

发布于 2010-05-20 04:33:38

这取决于注释。

一般来说,如果实体具有与字段名匹配的标准getter/setter,那么就没有太大的区别。如果可以选择,我倾向于注释字段,只是因为我发现用方法隐藏注释更难阅读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2869120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档