当前位置: 首页 > 面试题库 >

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

艾学海
2023-03-14
问题内容

主题说明了一切……到目前为止,人们在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

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


 类似资料:
  • 我不明白为什么我必须对类中的私有属性使用getter或setter。

  • 本文向大家介绍使用rem时应该注意什么?相关面试题,主要包含被问及使用rem时应该注意什么?时的应答技巧和注意事项,需要的朋友参考一下 看了下 绝对单位 和 相对单位。 em 是相对元素本身的 font-size 的相对单位,比如元素本身的 font-size 是 14px,那么 1.2em = 1.2 * 14px = 16.8px。注意,是相对元素本身的 font-size,会随着元素的 fo

  • 问题内容: 我看到成员变量被赋予了私有修饰符,然后使用getter / setter方法只是为了设置和获取变量的值(以标准化的名义)。 然后为什么不将变量本身公开(除了像spring框架这样的案例,该案例依赖于IOC的getter / setter方法)。它达到目的。 在C#中,我看到成员变量的大小写为getter / setter。为什么不将变量本身公开? 问题答案: 为了从一开始就获得 稳定的

  • 问题内容: 我已经观察到一个奇怪的事实(基于hibernate标记中的问题),人们仍在积极使用xml文件而不是使用注释来指定其ORM(Hibernate /JPA)映射。 在某些情况下,这是必需的: 您正在使用提供的类,并且想要映射它们。 您正在编写一个API,其域类可以在没有JPA提供程序的情况下使用,因此您不想强制JPA / Hibernate依赖关系。 但是,我认为这些情况并不常见。 我的假

  • 问题内容: 我已经用python编程了大约两年了。主要是数据资料(熊猫,mpl,numpy),还有自动化脚本和小型Web应用程序。我试图成为一个更好的程序员,并增加我的python知识,而困扰我的一件事是我从未使用过一个类(除了为小型Web应用程序复制随机烧瓶代码外)。我通常理解它们是什么,但是我似乎无法为为什么在一个简单的函数中需要它们的问题而wrap之以鼻。 为了使我的问题更具针对性:我编写了

  • 如果只有一方有getter或setter(私有字段被命名为不同的名称,以确保它不直接访问私有字段),该怎么办? 如果一个有getter而另一个有setter来处理完全不匹配的私有字段呢?(但是getter和setter的名称匹配。) 我编写了一个测试程序,在https://www.jdoodle.com/online-java-compiler中运行: