Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA实现-如何读取/设置属性?_Java_Jakarta Ee - Fatal编程技术网

Java JPA实现-如何读取/设置属性?

Java JPA实现-如何读取/设置属性?,java,jakarta-ee,Java,Jakarta Ee,我正在阅读JavaEE6平台和GlassFish3的入门书,在理解字段/属性的访问类型方面有一些小困难。他们两个有什么不同 JPA实现(在本例中是EclipseLink)是如何读取/设置属性的?例如,如果是属性访问,则通过可能的验证等读取/设置值,这些验证可放置在get/set方法中,而field access选项不通过这些方法设置/获取值,而是直接在字段上进行?类型是否由我放置@Id注释的位置设置 @Access注释类型指示JPA应该如何设置或获取对象中的字段。一个AccessType.FIE

我正在阅读JavaEE6平台和GlassFish3的入门书,在理解字段/属性的访问类型方面有一些小困难。他们两个有什么不同


JPA实现(在本例中是EclipseLink)是如何读取/设置属性的?例如,如果是属性访问,则通过可能的验证等读取/设置值,这些验证可放置在get/set方法中,而field access选项不通过这些方法设置/获取值,而是直接在字段上进行?类型是否由我放置@Id注释的位置设置

@Access注释类型指示JPA应该如何设置或获取对象中的字段。一个AccessType.FIELD JPA将直接使用反射设置该字段,并且不会使用任何提供的setter方法。如果您的类通过setter方法跟踪字段的“dirtyness”,这将非常有用。相反,设置
@Access(value=AccessType.PROPERTY)
将指示JPA在访问字段时使用setter和getter方法

您可以通过向setter方法添加日志记录或
System.out.println
s,然后对
@Access
注释进行更改来证明这一点。例如:

@Id
@Access(value=AccessType.PROPERTY)
private Long Id;
public void setId(Long id) { System.out.println("SET"); this.Id = id; }
将打印
SET
,并且:

@Id
@Access(value=AccessType.FIELD)
private Long Id;
public void setId(Long id) { System.out.println("SET"); this.Id = id; }
不会的

将注释放在何处也无关紧要,至少在Hibernate;-)中是如此