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

AccessType.FIELD,AccessType.PROPERTY和@Access的用途是什么

长孙昀
2023-03-14
问题内容

我只想知道所有这些注释之间的区别。我们为什么使用这些…意味着它们没有任何作用,特别是在字段级别和属性级别上。

像这样使用混合级别注释的目的是什么:

@Entity
@Access(AccessType.FIELD)
class Employee {
    // why their is a field level access 
    private int id;

    // whats the purpose of transient here
    @Transient                               
    private String phnnumber;

    // why its a property level access
    @Access(AccessType.property)             
    public String getPhnnumber() {
        return "1234556";
    }

}

这堂课到底怎么说?


问题答案:

默认情况下,访问类型由放置标识符注释(@Id)的位置定义。如果您将其放在场地上-
将会AccessType.FIELD,如果您将其放置在吸气剂上-
将会AccessType.PROPERTY

有时,您可能不希望对字段进行注释,而要对属性进行注释(例如,因为您希望在getter中具有一些任意逻辑,或者因为您更喜欢这种方式。)在这种情况下,您必须定义getter并将其注释为AccessType.PROPERTY

据我所记得,如果您指定任何一个AccessType.FIELDAccessType.PROPERTY任何实体字段/方法,则必须指定整个类的默认行为。这就是为什么您需要AccessType.FIELD在类级别上进行设置(尽管这AccessType.FIELD是默认值)。

现在,如果你不会有@Transientphnnumber领域,JPA会为您提供3列的表:

  • ID,
  • phnnumber,
  • getphnnumber。

这是因为它将AccessType.FIELD用于所有实体字段(idphnnumber),同时将AccessType.PROPERTY用于getter(getPhnnumber())。
您将在数据库中将电话号码映射两次。

因此,@Transient注释是必需的-这意味着实体不会将 字段 的值存储在基础存储中,而是将您的 getter
返回的值存储在基础存储中。



 类似资料:
  • 问题内容: 有什么用?它似乎总是存在于用NetBeans构建的应用程序中。我正在考虑为其中的每个组件存储一些帮助文本- 我不想使用工具提示,而是在另一个面板上显示帮助文本。 问题答案: 外观实现类在JDK中主要使用Component.setName(..)为每个组件设置类似ID的字符串,例如BasicOptionPaneUI可以在按钮组件上调用它以将其名称设置为“ OptionPane.butto

  • 问题内容: 的用途是什么? 我知道你可以在表上进行传递参数。 我还可以指定时间增量吗? 它是如何工作的?它是“拆包”类吗?喜欢a,b=1,2吗? 问题答案: 你可以用来让函数接受任意数量的关键字参数(表示“关键字参数”): 你还可以在调用函数时使用语法,方法是构造关键字参数字典并将其传递给函数: 在Python指南,包含了如何工作的,有一些很好的例子沿着一个很好的解释。 对于使用Python 3的

  • 问题内容: 我不了解Java的这一功能。我知道它使编码更容易,有时看起来更整洁,但这的实际用途是什么?相反,我觉得最好显示警告,因为将来任何人在修改代码之前都可以引用它们。这@SuppressWarnings是否提高了编译效率,还是根据任何编码标准? 问题答案: 其他答案已经解释了很多用例,但是我想强调一点, 有时您绝对需要使用它来克服语言本身的局限性,在这些情况下,使用绝对是合法的。 在其他情况

  • 问题内容: java中有什么用? 请解释一下。 问题答案: 可能这个例子会帮助您。

  • 本文向大家介绍sinon.js的用途是什么?,包括了sinon.js的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 SinonJS提供独立的测试间谍,存根和模拟。这是一个我们可以用来创建用于单元测试的对象模拟的库。 间谍-可以用来追踪执行情况的伪造函数。 存根-函数替换,我们可以从中返回所需的内容或使我们的函数以适合我们测试多个场景的方式工作。 嘲笑-假方法 所有这些对象都有助于对我们的代

  • 我试图理解何时应该使用stdio函数。 例如,如果我对有效的执行或,并得到一个短计数,并且为真,我该怎么办? 从我到目前为止所读到的,和是健壮的,并且会阻止和/或重试(如果有锁和/或中断可能发生在较低级别的函数中),所以使用<代码>clearerr()因为或错误将是如此灾难性,以至于没有必要尝试恢复。 另外,只告诉我有错误,而不是错误是什么。