主题说明了一切……到目前为止,人们在getter和/或setter上声明注解没有任何优势。对我而言,这仅具有将注释分布在类上的缺点,这会使类更加不可读。
将注释放在字段上可以明显减少需要帮助时要发布的代码量。不过,这只是一个很小的优势。但是在方法上添加注释对我没有用。
在方法上添加注释会强制JPA通过方法访问属性。当对象的内部状态与数据库模式不同时,这才有意义:
@Entity public class Employee { private String firstName; private String lastName; @Column(name = "EMP_NAME") // Due to legacy database schema public String getName() { return fisrtName + " " + lastName; } public void setName(String name) { ... } ... Getters and setters for firstName and lastName with @Transient ... }
在JPA 2.0中,您可以使用以下命令在细粒度级别上指定访问类型@Access:
@Access
@Entity @Access(AccessType.FIELD) public class Employee { @Access(AccessType.PROPERTY) @Column(name = "EMP_NAME") public String getName() { ... } ... other properties have field access ... }