* 해당 게시글은 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 |