본문 바로가기
Spring/Spring JPA

엔티티 매핑 관련 어노테이션

by chogigang 2023. 2. 28.
어노테이션 설명
@Entity 클래스를 엔티티로 선언
@Table 엔티티와 매핑할 테이블을 지정
@Id 테이블의 기본키에 사용할 속성을 지정
@GeneratedValue 키 값을 생성하는 전략 명시
@Column 필드와 컬럼 매핑
@Lob BLOB,CLOB 타입 매핑(용어 설명 참조)
@CreationTimestamp  insert 시 시간 자동 저장
@Update Timestamp update 시 시간 자동 저장
@Enumerated enum 타입 매핑
@Transient 해당 필드 데이터베이스 매핑 무시
@Temporal 날짜 타입 매핑
@CreateDate 엔티티가 생성되어 저장될 때 시간 자동 저장
@LastModifiedDate 조화한 엔티티의 값을 변경할 때 시간 자동 저장

 

 

@Column 속성

테이블을 생성할 때 컬럼에는 다양한 조건들이 들어갑니다.  예를 들면 문자열을 저장하는 VARCHAR 타입은 길이를 설정할 수 있고, 테이블에 데이터를 넣을 때 데이터가 항상 존재해야 하는 Not Null조건 등이 있습니다.@Column 어노테이션의 속성을 이용하면 테이블에 매핑되는 컬럼의 이름,문자열의 최대 저장 길이 등 다양한 제약 조건들을 추가할 수 있습니다.

 

속성 설명 기본값
name 필드와 매핑할 컬럼의 이름 설정 객체의 필드 이름
unique(DDL) 유니크 제약 조건 설정  
insertable insert 가능 여부 true
updatable update가능 여부 true
length String 타입의 문자 길이 제약조건 설정  
nullable(DDL) null 값의 허용 여부 설정.false 설정 시 DDL 생성 시에 not null제약조건 추가   
columnDefinition  데이터베이스 컬럼 정보 직접 기술
예 
@Column(columnDefinition = "varchar(5)
default'10' not null")
 
precision,scale(DDL) BigDecimal타입에서 사용(BigInteger 가능) precision은 소수점을 포함한 전체 자리수이고, scale은 소수점 자리수. 
Double 과 float 타입에는 적용되지 않음
 

DDL 의 의미

DDL이란 테이블,스키마,인덱스,뷰,도메인을 정의, 변경,제거할 때 사용하는 언어 입니다.

가령,테이블을 생성하거나 삭제하는 CREATE,DROP 등이 이에 해당합니다.

 

 

 

@Entity 어노테이션은 클래스의 상단에 입력하면JPA에 엔티티 클래스라는 것을 알려줍니다.

Entity클래스는 반드시 기본키를 가져야 합니다 @Id 어노테이션을 이용하여 id 멤버 변수를 상품 테이블의

기본키로 설정합니다. @GeneratedValue 어노테이션을 통한 기본키를 생성하는 전략은 총 4가지가 있습니다.

 

생성 전략 설명
GenerationType.AUTO(default) JPA 구현체가 자동으로 생성 전략 결정
GenerationType.IDENTITY 기본키 생성을 데이터베이스에 위임
예)MySQL 데이터베이스의 경우 AUTO_INCREMENT를 사용하여 기본키 생성
GenerationType.SEQUENCE
데이터베이스 시퀸스 오브젝트를 이용한 기본키 생성
@SequenceGenerator를 사용하여 시퀸스 등록 필요
GenerationType.TABLE 키 생성용 테이블 사용 @TableGenerato 필요

전략이라는 단어는 기본키를 생성하는 방법이라고 생각하면 편합니다 

MYSQL에서 AUTO _INCREMENT를 이용해 데이터베이스에 INSERT 쿼리문을 보내면 자동으로 기본키 값을 증가시킬 수 있습니다. SEQUENC의 경우 기본키의 초기값,최댓값,최솟값을 지정할 수 있습니다. 

기본키를 생성하는 다양한 방법을 JPA에서 지정해 줄 수 있습니다.

 

 

기본키와 데이터베이스 시퀸스 오브젝트의 의미

기본키(primary key)는 데이터베이스에서 조건을 만족하는 튜플을 찾을 때 다른 튜플들과 유일하게 구별할수 있도록 기준을 세워주는 속성 입니다. 예를들어서 상품 데이터를 찾을 때 삼품의 id르르 통해서 다른 상품들과 구별을 할 수 있습니다.

여기서 기본키는 id 입니다.

 

데이터베이스 시퀸스 오브젝트에서 시퀸스란 순차적으로 증가하는 값을 반환해주는 데이터베이스 객체입니다.

보통 기본키의 중복값으르 방지하기 위해서 사용합니다.

 

 

 

 

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

Auditing을 이용한 엔티티 공통 속성 공통화  (0) 2023.03.06
영속성 전이  (0) 2023.03.06
연관 관계 매핑 종류  (1) 2023.03.05
@Query  (0) 2023.03.02
JPA  (0) 2023.02.28