매핑 어노테이션
@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 |