티스토리 뷰

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);
	}
}

참고자료

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함