-
[JPA] 엔티티 데이터 접근 전략 @Access (feat. 필드접근 vs 프로퍼티 접근)프로그래밍/Java 2021. 12. 28. 13:47반응형
@Access
JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
필드 접근
@Access(AccessType.FIELD)
- 필드에 직접 접근한다. 필드 접근권한이 private이어도 접근할 수 있다.
프로퍼티 접근
@Access(AccessType.PROPERTY)
- 프로퍼티에 접근한다.
@Access가 없는 경우
@Access를 설정하지 않으면 @Id의 위치를 기준으로 접근 방식이 설정된다.
@Entity @Access(AccessType.FIELD) public class Member { @Id // id가 필드에 있으므로 @Access(AccessType.FIELD) 생략 가능 private String id; }
@Entity @Access(AccessType.PROPERTY) public class Member { private String id; @Id // id가 프로퍼티에 있으므로 @Access(AccessType.PROPERTY)와 같다 public String getId() { return id; } }
필드 접근 방식과 프로퍼티 접근 방식의 혼용
@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; } }
회원 엔티티를 저장하면 회원 테이블의 FULLNAME 컬럼에 firstName + lastName의 결과가 저장된다
반응형'프로그래밍 > Java' 카테고리의 다른 글
[JPA] 연관관계(1:N) 매핑하기 (0) 2022.02.10 [JPA] 지연로딩 & 즉시로딩 (0) 2022.01.21 [JPA] 영속성 관리 (영속성 컨텍스트란?) (0) 2021.12.28 [JAVA] 동일성과 동등성 (0) 2021.12.28 java 비동기 (0) 2021.11.22