Helmi

Entity 매핑 관련 어노테이션 본문

SpringBoot

Entity 매핑 관련 어노테이션

Helmi 2023. 3. 13. 15:44

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

 

CLOB, BLOB 의미

: CLOB - 사이즈가 큰 데이터를 외부 파일로 저장하기 위한 데이터 타입. 문자형 대용량 파일 저장위해 사용

  BLOB - 바이너리 데이터를 DB 외부에 저장하기 위한 타입. 이미지, 사운드, 비디오 같은 멀티미디어 데이터 다룰 때 사용

 

@Entity 는 클래스의 상단에 입력하면 JPA에 엔티티 클래스라는 것을 알려줌. Entity는 반드시 기본키 가져야 함.

@Id 이용해 id 멤버 변수를 상품 테이블의 기본키로 설정. 

 

@GeneratedValue어노테이션 통한 기본키 생성 전략 4가지

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

MySQL에서 AUTO_INCREMENT 이용해 데이터베이스에 INSERT 쿼리문 보내면 자동으로 기본키 값 증가 가능.

Sequence 경우 기본키의 초기값, 증가값, 최댓값, 최솟값 지정 가능

 

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

 

DDL(Data Definition Language) 의미

: 테이블, 스키마, 인덱스, 뷰, 도메인을 정의, 변경, 제거시 사용하는 언어.

ex) 테이블 생성/ 삭제하는 CREATE, DROP 등

'SpringBoot' 카테고리의 다른 글

쿼리 메소드 - 1  (0) 2023.03.14
Repository 설계하기  (0) 2023.03.14
상품 엔티티 설계  (0) 2023.03.13
쇼핑몰 프로젝트 생성  (0) 2023.03.12
JPA란?  (0) 2023.03.07