Annotation
자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종
종류 | 역할 |
@Entity | 해당 클래스가 데이터베이스의 테이블과 1:1 매핑 • 도메인을 식별하는데 사용 • JPA가 관리 • 기본 생성자 필수 • final 클래스, enum, interface, 내부 클래스에서 사용 불가 • 속성 - name(String) - default : 클래스의 이름 → JPA에서 사용할 엔티티 이름 |
@Table | 엔티티와 매핑할 테이블 지정 • 도메인 개체가 참조하는 테이블에 사용 • 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용 • 속성 - name(String) - default : 엔티티의 이름 → 매핑할 테이블 이름 • 속성 - catalog(String) - default : 데이터베이스의 이름 → • 속성 - schema(String) - default : 엔티티의 이름 → 매핑할 테이블 이름 • 속성 - uniqueConstraints(String) → DDL 생성 시 만들 unique 제약조건 |
@Column | 해당 멤버변수가 테이블의 column과 매핑 • 속성 - name(String) - default : 멤버변수의 이름 → 매핑할 테이블의 컬럼 이름 • 속성 - table(String) → 해당 필드를 매핑할 다른 테이블 이름 • 속성 - nullable(boolean) - default : false → null 허용 여부 • 속성 - unique(boolean) - default : false → 제약조건 • 속성 - columnDefinition(int) → 컬럼 정보 지정 • 속성 - length(int) - default : 255 → varchar의 길이를 조정 |
@Id | JPA가 관리하면서 식별할 기본키 지정 |
@GeneratedValue | 기본키를 자동으로 생성 • 전략 - strategy=GenerationType.IDENTITY → 기본키 생성을 데이터베이스에 위임 • 전략 - default : strategy=GenerationType.AUTO |
@Query | 쿼리 메소드보다 구체적인 조건 등을 지정하기 위해서 사용 • JPQL이나 DB에 맞는 SQL 사용 • 필요한 column 값들만 추출하여 리턴 가능 • 리턴 타입 : Object[ ] (엔티티 타입이 아님) • 속성 - value(String) → 쿼리문 • 속성 - nativeQuery(boolean) → nativeQuery 여부 |
@Access | JPA가 엔티티 데이터에 접근하는 방식을 지정 • 전략 - access=AccessType.FIELD → 필드에 직접 접근 • 전략 - access=AccessType.PFOPERTY → 접근자 getter을 사용 |
@OrderBy | 정렬 순서 지정 • 속성 - value(String) → 정렬할 필드 이름, [ASC | DESC] |
@Transient | 객체에 임시로 어떤 값을 저장하고 싶을 때 사용 • 필드에 매핑하지 않음 • 데이터베이스에 저장하지도, 조회하지도 않음 |
Hibernate Association 매핑
종류 | 역할 |
@OneToOne | 해당 객체와 1:1 관계를 지정 |
@ManyToOne | 단일 객체에 매핑되는 객체의 컬렉션을 지정 • 자식 Entity 객체에서 부모 Entity 객체를 바라볼 때 사용 |
@OneToMany | 여러 객체에 매핑되는 단일 객체를 지정 • 부모 Entity 객체에서 여러 자식 Entity 객체가 있는 경우 사용 |
@ManyToMany | 데이터베이스 상의 N:M 관계 |
@PrimaryKeyJoinColumn | 다른 테이블에 조인할 foreign 키로 사용되는 primary 키 열을 지정 • @Id + @JoinColumn • 여러 자식 테이블들의 row 1개가 부모 테이블 row 1개를 바라보는 형태를 구현할 때 사용 (상속을 사용하면 완벽한 식별관계를 형성해서 자식 row에 맞춰 부모 row를 생성하기 때문에 불가) |
@JoinColumn | foreign 키를 매핑 • 필수 속성 - name(String) → 매핑할 foreign 키 이름 |
Hibernate Inheritance 매핑
종류 | 역할 |
@Inheritance | |
@DiscriminatorColumn | |
@DiscriminatorValue |
[ 출처 ]
https://goodgid.github.io/Spring-Data-JPA-Query_Part_2/