본문 바로가기

JPA

JPA 엔티티 클래스 관련 애노테이션 알아보기

* 해당 게시글은 JPA의 공부를 위한 게시글로 JPA를 공부하며 이해했던 내용들을 정리하는 글입니다.

 

엔티티 클래스에 설정할 수 있는 다양한 애노테이션이 존재합니다. 이 글에서는 애노테이션과, 각 애노테이션의 속성을 알아보겠습니다.

 

@Entity

  • JPA는 @Entity 애노테이션이 설정된 클래스로부터 생성된 객체를 엔티티로 인식합니다. name 속성으로 엔티티 이름을 정의할 수 있습니다.

@Id

  • 테이블의 기본키와 매핑되는 엔티티 클래스의 식별자 변수를 표시할 때 해당 애노테이션을 사용합니다. strategy 속성으로 데이터베이스의 key 생성 전략을 지정합니다. key 생성 전략에 대한 부분은 해당 게시글에 자세히 설명하고 있으니 참고바랍니다.

@Table

  • @Table 애노테이션의 name 속성을 지정하지 않으면 엔티티 클래스과 동일한 테이블을 매핑합니다.
속성 설명
name 매핑할 테이블 이름을 지정합니다.
catalog 데이터베이스의 카탈로그를 지정합니다.
schema 데이터베이스의 스키마를 지정합니다.
uniqueConstraints 결합 unique 제약조건을 지정하며, 여러 개의 칼럼이 결합되어 유일성을 보장해야 하는 경우 사용합니다.

 

@Column

  • @Column 애노테이션은 일반적으로 멤버변수와 칼럼명이 다를경우 엔티티 클래스의 멤버변수와 테이블의 칼럼을 매핑할 때 사용합니다. 같을경우 사용 X  
속성 설명 기본값
name 매핑될 테이블의 칼럼을 지정합니다.  
unique unique 제약조건을 설정합니다 false
nullable null을 허용할지 설정합니다. false
insertable insert SQL구문을 생성할 때 이 칼럼을 포함시킬지 설정합니다. true
updatable update SQL 구문을 생성할 때 이 칼럼을 포함시킬지 설정합니다. true
length 문자열 타입의 칼럼 길이를 지정합니다. 255
precision 숫자타입의 전체 자리수를 지정합니다. 0
scale 숫자타입의 소수점 자리수를 지정합니다. 0
columnDefinition 이 칼럼에 대한 DDL문을 직접 기술합니다.  

 

@Temporal

  • 날짜 데이터를 매핑할 때 사용하며 TemporalType을 통해 날짜 형식을 지정할 수 있습니다. TemporalType.DATE는 날짜정보만 표현하며, TemporalType.TIME은 시간정보만, TemporalType.TIMESTAMP는 날짜와 시간 모두 표현합니다.

@Transient

  • 매핑하지 않을 멤버변수에 사용합니다.

@Access

  • 엔티티 클래스의 멤버변수가 접근하는 방식을 지정합니다. 멤버변수에 직접적으로 접근할 수 있고, Getta/Setta 메소드를 통해 접근할 수 있습니다. @Access 애노테이션은 @Id 애노테이션이 정의된 방식에 따라 정의됩니다. 식별자 변수위에 @Id 정의되면 AccessType.FIELD로 설정되어 멤버변수에 직접 접근합니다. 반면 Getta 메소드 위에 @Id를 정의하면 AccessType.PROPERTY로 설정됩니다.  

 

출처

  • JPA 퀵스타트 책 참고

'JPA' 카테고리의 다른 글

JPA 영속 컨텍스트와 엔티티 상태  (0) 2020.12.12
JPA 식별자 자동생성 방식  (0) 2020.12.11
JPA란?  (0) 2020.12.10