JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
설정하지 않으면 @Id의 위치를 기준으로 접근 방식이 설정된다.
필드 접근 (권장)
AccessType.FIELD로 지정한다. 필드에 직접 접근한다. 필드 접근 권한이 private이어도 접근할 수 있다.
@Entity
@Access(AccessType.FIELD)
public class Member {
@Id
private String id;
}
@Id가 필드에 있으므로 @Access(AccessType.FIELD)로 설정한 것과 같다. 따라서 @Access는 생략해도 된다.
프로퍼티 접근
AccessType.PROPERTY로 지정한다. Getter를 사용한다.
@Entity
@Access(AccessType.PROPERTY)
public class Member {
private String id;
@Id
public String getId() {
return id;
}
}
@Id가 프로퍼티에 있으므로 @Access(AccessType.PROPERTY)로 설정한 것과 같다. 따라서 @Access는 생략해도 된다.
필드, 프로퍼티 접근 함께 사용
@Entity
public class Member {
@Id
private String id;
@Transient
private String firstName;
@Transient
private String lastName;
@Access(AccessType.PROPERTY)
public String getFullName() {
return firstName + lastName;
}
public void setFullName(String fullName) {
... 생략
}
}
회원 테이블의 FULLNAME 컬럼에 firstName + lastName의 결과가 저장된다.
728x90
'JVM > JPA' 카테고리의 다른 글
@OneToMany (0) | 2023.06.12 |
---|---|
@ManyToOne, @JoinColumn (0) | 2023.06.12 |
@Transient (0) | 2023.06.11 |
@Lob (0) | 2023.06.11 |
@Temporal (0) | 2023.06.11 |