코드 그라데이션
엔티티 설계하기 관련 본문
엔티티 매핑 관련 어노테이션
어노테이션 | 설명 |
@Entity | 클래스를 엔티티로 선언 |
@Table | 엔티티와 매핑할 테이블을 지정 |
@Id | 테이블의 기본키에 사용할 속성을 지정 |
@GenerateValue | 키 값을 생성하는 전략 명시 |
@Column | 필드와 컬럼 매핑 |
@Lob | BLOB, CLOB 타입 매핑 |
@CreationTimestamp | insert 시 시간 자동 저장 |
@Enumerated | enum 타입 매핑 |
@Transient | 해당 필드 데이터베이스 매핑 무시 |
@Temporal | 날짜 타입 매핑 |
@CreateDate | 엔티티가 생성되어 저장될 때 시간 자동 저장 |
@LastModifiedDate | 조회한 엔티티의 값을 변경할 때 시간 자동 저장 |
BLOB, CLOB의 의미
- CLOB이란 사이즈가 큰 데이터를 외부 파일로 저장하기 위한 데이터 타입이다.
문자형 대용량 파일을 저장하는데 사용하는 데이터 타이2이라고 생각하면 된다.
- BLOB이란 바이너리 데이터를 DB 외부에 저장하기 위한 타입이다.
이미지, 사운드, 비디오 같은 멀티미디어 데이털르 다룰 때 사용할 수 있다.
@Column 속성
속성 | 설명 | 기본값 |
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) default '10' not null") |
|
precision, scale(DDL) | BigDecimal 타입에서 사용(BigInteger 가능) precision은 소수점을 포함한 전체 자리수이고, scale은 소수점 자리수, Double과 float 타입에는 적용되지 않음 |
@GeneratedValud 생성 전략
생성 전략 | 설명 |
GenerationType.Auto | JPA 구현체가 자동으로 생성 전략 결정 |
GenerationType.IDENTITY | 기본키 생성을 데이터베이스에 위임 ex) MySql 데이터베이스의 경우 AUTO_INCREMENT를 사용하여 기본키 생성 |
GenerationType.SEQUENCE | 데이터베이스 시퀀스 오브젝트를 이용한 기본키 생성 @SequenceGenerator를 사용하여 시퀀스 등록 필요 |
GenerationType.TABLE | 키 생성용 테이블 사용. @TableGenerator 필요 |
728x90
'Spring > 개념 정리' 카테고리의 다른 글
[스파르타] SpringData 구조 및 JpaRepository 원리 (0) | 2023.02.18 |
---|---|
20230210 JPA 설명 (0) | 2023.02.14 |
영속성 컨텍스트 사용 시 이점 (0) | 2023.02.05 |
JPA 동작 방식 (0) | 2023.02.05 |
Lombok 라이브러리에서 자주 사용하는 어노테이션 (0) | 2023.01.30 |
Comments