728x90
3. 필드와 컬럼 매핑
데이터베이스 스키마 자동 생성하기
매핑 어노테이션
- @Column
- name : DB column명을 쓸 때 사용 (필드명과 같으면 생략이 가능)
- insertable, updateable: 읽기 전용
- nullable: null 허용 여부 결정 - DDL 생성시 사용
- unique: 유니크 제약 조건, DDL 생성시 사용
- columnDefinition : 컬럼 정보를 줄 수 있다.
- length(default 255) : 문자 길이 제약조건
- precision : 소수점을 포함한 전체 자리수
- scala : 소수 자리수
- @Temporal
- 시간 관련된 속성
- TemporalType.DATE : 날짜
- TemporalType.TIME : 시간
- TemporalType.TIMESTAMP : 날짜와 시간
- LocalDateTime이 있기 때문에 잘 사용하지 않는다.
- @Enumerated
- 자바의 enum을 매핑
- EnumType.STRING
- enum의 name()값 저장
- EnumType.ORDINAL
- enum의 인덱스 값 저장
- 가급적이면 STRING을 사용하자.
- @Lob
- 컨텐츠의 크기가 너무 길면 사용
- CLOB, BLOB 매핑 → 자동으로 타입에 맞춰서 사용해준다.
- CLOB: String, char[], java.sql.CLOB
- BLOB: byte[], java.sql.BLOB
- @Transient
- 이 필드는 매핑하지 않는다.
- 애플리케이션에서 DB에 저장하지 않는 필드
식별자 매핑 방법
- @Id(직접 매핑)
- @GeneratedValue
- IDENTITY : 데이터베이스에 위임, MySQL
- SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, Oracle
- @SequenceGenerator 필요
- TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용
- @TableGenerator 필요
- AUTO: 방언에 따라 자동 지정, 기본값
권장하는 식별자 전략
- 기본 키 제약 조건 : null 아니고, 유일하고, 변하면 안된다.
- 미래까지 이 조건을 만족하는 자연키는 찾기 어렵다. 대리키(대체키)를 사용하자.
- 예를 들어 주민등록번호도 기본 키로 적절하지 않다.
- 권장 : Long + 대체키 + 키 생성전략 사용
- 아니면 UUID를 권장하지만, DB마다 성능 이슈가 있어 확인해야 한다.
출처
728x90
728x90
'Lecture > [Tacademy] JPA 프로그래밍 기본기 다지기' 카테고리의 다른 글
6. JPA 내부구조 (0) | 2020.12.16 |
---|---|
5. 양방향 매핑 (0) | 2020.12.15 |
4. 연관관계 매핑 (0) | 2020.12.15 |
2. JPA 기초와 매핑 (0) | 2020.12.13 |
1. JPA 소개 (0) | 2020.12.05 |