一尘不染

使用JPA映射类时,为什么有人应该在getter或setter上添加注释?

hibernate

主题说明了一切……到目前为止,人们在getter和/或setter上声明注解没有任何优势。对我而言,这仅具有将注释分布在类上的缺点,这会使类更加不可读。

将注释放在字段上可以明显减少需要帮助时要发布的代码量。不过,这只是一个很小的优势。但是在方法上添加注释对我没有用。


阅读 465

收藏
2020-06-20

共1个答案

一尘不染

在方法上添加注释会强制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

@Entity @Access(AccessType.FIELD)
public class Employee {
    @Access(AccessType.PROPERTY) @Column(name = "EMP_NAME")
    public String getName() { ... }
    ... other properties have field access ...
}
2020-06-20