概述
2019独角兽企业重金招聘Python工程师标准>>>
JPA规范中可以通过@Access注解的来指定实体类的访问策略。
/**
* Used to specify an access type to be applied to an entity class,
* mapped superclass, or embeddable class, or to a specific attribute
* of such a class.
*
* @since Java Persistence 2.0
*/
@Target( { TYPE, METHOD, FIELD })
@Retention(RUNTIME)
public @interface Access {
/**
* (Required) Specification of field- or property-based access.
*/
AccessType value();
}
@Access注解中可以接收两种AccessType类型的值:AccessType.FIELD和AccessType.PROPERTY。
AccessType.FIELD指通过类中的字段来获取对应的表字段信息。此时,JPA只关注类中的字段名,并转换为对应的表字段信息,而不会读取getter方法和setter方法上的表字段注解信息。如:
@Entity
@Table(name="t_user")
@Access(AccessType.FIELD)
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@Column(name="name", length=30)
private String name;
@Column(name="age", nullable=false)
private int age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
AccessType.PROPERTY指通过类中的getter方法和setter方法来获取对应的表字段信息。此时,JPA只关注类中getter方法和setter方法上的表字段注解信息,并转换为对应的表字段信息。如:
@Entity
@Table(name="t_cat")
@Access(AccessType.PROPERTY)
public class Cat implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="name", length=30)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
JPA的关联规则可以根据喜好而任选其一进行配置使用,在对应生成表字段信息时没有区别。从@Access注解的@Target配置信息中可知其可以配置在类,字段或方法上。以此来满足不同场景下表字段信息的扫描规则需求。如:
@Entity
@Table(name="t_employee")
@Access(AccessType.FIELD)
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Access(AccessType.PROPERTY)
@Column(name="name", length=30)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在默认情况下,JPA会自动识别@Id注解的配置方式,并以此来选择对应的表字段信息的扫描规则。
转载于:https://my.oschina.net/u/1156626/blog/1619239
最后
以上就是朴素洋葱为你收集整理的JPA中@Access注解小结的全部内容,希望文章能够帮你解决JPA中@Access注解小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复