可能听起来像一个有趣的问题,但我在其他地方找不到答案:@Entity类的字段上的注释顺序是否重要?
我在谈论像这样的注释
@Column(name = "password")
@Length(min = 5, message = "*Your password must have at least 5 characters")
@NotEmpty(message = "*Please provide your password")
@Transient
private String password;
要么
@Column(name = "created_at", columnDefinition = "DATETIME")
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
在功能上,顺序无关紧要。 从阅读的角度来看当然很重要。 当你看一个实体领域时,你想直接了解一般事物。 例如,它在DB中的映射或使用的集合关系。
通常,这个问题很重要,因为您需要为同一个字段声明一定数量的注释(至少为您的示例中的4个)。
一些好的想法:
@Column
,@ManyToOne
等)比最具体的注释(例如验证注释)更明显从一般到具体和验证在一起:
@Column(name = "pass")
@Transient
@Length(min = 5, message = "*Your password must have at least 5 characters")
@NotEmpty(message = "*Please provide your password")
private String password;
或者从具体到一般和验证:
@Length(min = 5, message = "*Your password must have at least 5 characters")
@NotEmpty(message = "*Please provide your password")
@Transient
@Column(name = "pass")
private String password;
作为凌乱的订单看起来更具可读性:
@Length(min = 5, message = "*Your password must have at least 5 characters")
@Column(name = "pass")
@Transient
@NotEmpty(message = "*Please provide your password")
private String password;
通常最好遵循此表中建立的顺序:
http://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations-096251.html
按照你的例子,它可能是:
@Column(name = "password")
@Transient
@NotEmpty(message = "*Please provide your password")
private String password;
@Column(name = "created_at", columnDefinition = "DATETIME")
@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
private Date createdAt;
但据我所知,没有既定的惯例