티스토리 뷰
728x90
반응형
자주 사용할 만한 매핑 어노테이션
@Column | 컬럼 매핑 |
@Temporal | 날짜 타입 매핑 |
@Enumerated | enum 타입 매핑 |
@Lob | BLOB, CLOB 매핑 |
@Transient | 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) |
- hibernate.hbm2ddl.auto 에서 제공
@Column
속성 | 설명 | 기본값 |
name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
insertable, updatable | 등록,변경 가능 여부 | TRUE |
nullable(DDL) | null 값의 허용 여부를 설정한다.false 로 설정하면 DDL 생성 시에 not null 제약 조건이 붙는다. | |
unique(DDL) | @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. | |
columnDefinition(DDL) | 데이터베이스 컬럼 정보를 직접 줄 수 있다. ex) varchar(100) default 'EMPTY' |
필드의 자바 타입과 방언 정보를 사용 |
length(DDL) | 문자 길이 제약조건 , String 타입에만 사용한다. | 255 |
precision,scale(DDL) | BIgDecimal 타입에서 사용한다.(BigInteger도 사용할 수 있다.) precision은 소수점을 포함한 전체 자릿수를 ,scale은 소수의 자릿수다, 참고로 double ,float에는 적용안된다. 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다. |
precision = 9, scale=2 |
@Enumerated
- 자바 enum 타입을 매핑할 때 사용
- ORDINAL 사용은 왠만하면 X
속성 | 설명 | 기본값 |
value | * EnumType.ORDINAL:enum 순서를 데이터베이스에 저장 * EnumType.STRING: enum 이름을 데이터베이스에 저장 |
EnumType.ORDINAL |
@Temporal
- 날짜 타입(java.util.Date,java.util.Calendar)을 매핑할 때 사용
- 참고 : LocalDate, LocalDateTime을 사용할 떄는 생략 가능(최신 하이버네이트 지원)
송성 | 설명 | 기본값 |
value | * TemporalType.DATE : 날짜, 데이터베이스 date 타입과 매핑 (예 : 2013-10-11) * TemporalType.TIME : 시간, 데이터베이스 date 타입과 매핑 (예: 11:11:11) * TemporalType.TIMESTAMP : 날짜와 시간 , 데이터베이스 timestamp 타입과 매핑(예: 2013-10-11 11:11:11) |
@Lob
- 데이터베이스 BLOB,CLOB 타입과 매핑
- @Lob에는 지정할 수 있는 속성이 없다.
- 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지 BLOB 매핑
- CLOB : String, char[]. java.sql.CLOB
- BLOB : byte[], java.sql.BLOB
@Transient
- 필드 매핑x
- 데이터베이스에 저장x, 조회x
- 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용
기본 키 매핑 어노테이션
- @Id
- @GeneratedValue
자동 생성
- IDENTITY : 데이터베이스에 위임, MYSQL
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE , @SequenceGenerator 필요
- TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용 , @TableGenerator 필요
- AUTO : 방언(데이터 베이스) 에 따라 자동 지정, 기본값
@Id @GeneratedValue(startegy = GenerationType.AUTO)
private Long id;
@CreatedDate : 자동 등록일자
@LastModifiedDate : 자동 수정일자
주의 사항 : 자동 날짜 입력을 이용하기 위해서는 Application.class 에 @EnableJpaAuditing을 선언하여야 한다.
ex) 예시
//객체에 선언 방법
@CreatedDate
private LocalDateTime createDate;//등록일자
@LastModifiedDate
private LocalDateTime modifyDate;//수정일자
//Spring boot 기준
//어노테이션 사용하기 위한 선언
@SpringBootApplication
@EnableJpaAuditing
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
참고자료
728x90
반응형
'프로그램 언어 > Spring JPA' 카테고리의 다른 글
SPRING JPA 상속관계(단일 테이블 전략) (0) | 2023.04.26 |
---|---|
양방향 연관관계 , 연관관계의 주인 (0) | 2023.04.26 |
테이블 지향 모델링 vs 객체 지향 모델링 (0) | 2023.04.26 |
엔티티 매핑(기본편) (0) | 2023.04.26 |
영속성 관리 (0) | 2023.04.26 |
250x250
반응형
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mybatis
- 이미지
- docker
- ncp
- Java
- Lock
- 캘린더
- 권한
- hazelcast
- Quartz
- 도커
- 컨테이너
- dfs
- MySQL
- LocalDate
- Cache
- 네이버 클라우드
- insert
- 캐시
- 알고리즘
- leatcode
- 정의
- Linux
- 리눅스
- dockerfile
- spring
- 격리수준
- centos7
- 스케줄러
- 개념 이해하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함