본문으로 바로가기

[JPA] annotation 종류

category TIL/JPA 2022. 5. 6. 20:34

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/

 

'TIL > JPA' 카테고리의 다른 글

[JPA] 데이터베이스 스키마 자동 생성하는 방법  (0) 2022.05.07
[JPA] N+1 문제  (0) 2022.04.19
[JPA] Querydsl 설정  (0) 2022.04.19
[JPA] JPA란?  (0) 2022.04.19