본문 바로가기
JPA

JPA 매핑 어노테이션

by bloodFinger 2020. 5. 24.

매핑 어노테이션

@Column

@Column(name="USERNAME")
private String name

옵션

-name : 필드와 매핑할 테이블의 컬럼 이름

-insertable , updatable : 읽기 전용

-nullable : null 허용여부 결정, DDL 생성시  사용

-unique : 유니크 제약 조건, DDL 생성시 사용 

-ColumnDefinition , length , precesion , scale(DDL)

 

@Temporal

@Temporal(TemporalType.TIMESTAMP)
private Data regDate;

 

@Enumerated            -> 자바의 enum 매핑

@Enumerated(EnumType.STRING) 
private MemberType memberType;

//현업에서는 String만 쓴다, ORDINARY는 변화가 없다는 가정이 없다면 사용을 권장하지 않는다.
public enum MemberType (
	USER, ADMIN
)

@Lob

@Lob
private String lobString; //clob

@Lob
private byte[] lobByte  //blob

//컨텐츠 길이가 너무 길때 바이너리파일로 밀어넣어야 한다.
//타입별로 알아서 clob , blob으로 변경된다~

 

 

@Transient

DB에 매핑은 안하는데 객체에 넣어두고 싶을때 사용한다.

임시 flag 같은거 , 근데 웬만하면 사용 안하는게 좋다.

 

 

식별자 어노테이션

@Id

옵션

- IDENTITY : 데이터베이스에 위임 , MYSQL

- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE 

- TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용

- AUTO : 방언에 따라 자동 지정, 기본값  

 

@GeneratedValue

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

 

 

 

권장하는 식별자 전략

- 기본키 제약조건(null이면 안된다, 유일 해야한다, 변하면 안된다)

- 미래까지 이 조건을 만족하는 자연키는 찾기 어렵다 , 그러니 대체키를 사용하자

- 예를 들어 주민번호도 기본 키로 적절하지 않다.

-ORM 프레임워크에서는 대체키를 써라 즉, 비즈니스랑 전혀 관계없는걸 PK로 쓰는게 좋다

그리고 pk를 int로 잡기보다는 Long으로 하자!

 

 

'JPA' 카테고리의 다른 글

Spring Data JPA & QueryDSL  (0) 2021.01.07
JPA 내부구조 알아보기  (0) 2020.09.14
JPA 사용시 주의사항 정리  (0) 2020.08.22
연관관계 매핑  (0) 2020.05.25
이제는 Mybatis 에서 JPA로 넘어가자  (0) 2020.04.17