일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- react
- Heap
- 백준
- Algorithm
- MSA
- 자바
- Galera Cluster
- Java
- c언어
- IT
- 파이썬
- Proxy
- mongoDB
- design pattern
- spring webflux
- OS
- JavaScript
- 네트워크
- 운영체제
- Spring
- 컴퓨터구조
- JPA
- 자료구조
- 디자인 패턴
- Kafka
- 알고리즘
- C
- MySQL
- Data Structure
- redis
Archives
- Today
- Total
시냅스
JPA 엔티티 매핑 정리 본문
엔티티 매핑
- 객체와 테이블 매핑
- @Entity
- JPA가 관리하는 클래스
- 테이블과 매핑할 클래스
- 기본 생성자(public, protected)를 필수로 생성해야 한다.
- @Table
- 속성
- name
- JPA에서 사용할 엔티티 이름을 지정한다.
- 기본값 : 클래스의 이름을 그대로 사용한다.
- 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.
- catalog
- 데이터베이스 catalog 매핑
- schema
- 데이터베이스 schema 매핑
- uniqueConstraints
- DDL 생성 시에 유니크 제약 조건 생성
- name
- 속성
- @Entity
- 필드와 컬럼 매핑
- @Column
- 컬럼 매핑
- 속성
- name
- 필드와 매핑할 테이블의 컬럼 이름
- insertable, updatable
- 등록, 변경 가능 여부
- nullable(DDL)
- null 값의 허용 여부
- unique(DDL)
- unique 제약 조건
- columnDefinition(DDL)
- 컬럼 정보
- length(DDL)
- 문자 길이 제약 조건, String 타입만 적용 가능
- percision, scale(DDL)
- BigDecimal 타입에서 사용한다.
- precision은 소수점을 포함한 전체 자릿수
- scale은 소수의 자릿수
- name
- @Temporal
- 날짜 타입 매핑
- 속성
- TemporalType.Date
- 날짜, 데이터베이스 date 타입과 맵핑
- e.g. 2013-10-11
- TemporalType.Time
- 시간, 데이터베이스 time 타입과 매핑
- e.g. 11:11:11
- TemporalType.TIMESTAMP
- 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
- e.g. 2013-10-11 11:11:11
- TemporalType.Date
- @Enumerated
- enum 타입 매핑
- value
- EnumType.ORDINAL
- 순서를 숫자로(우리가 아는 enum) 절대 사용하면 안된다.
- EnumType.STRING
- enum 이름을 데이터베이스에 저장
- 무조건 이걸 사용해야 한다.
- EnumType.ORDINAL
- @Lob
- BLOB, CLOB 매핑
- 지정할 수 있는 속성이 없다.
- 매핑할 필드 타입이 문자면 CLOB
- 나머지는 BLOB
- @Transient
- 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)
- 데이터베이스에 저장, 조회 하지 않음
- 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때
- @Column
- 기본 키 매핑
- @Id
- @GeneratedValue
- strategy = GenerationType.IDENTITY
- 데이터베이스에 위임
- MYSQL(AUTO_INCREMENT)
- AUTO_INCREMENT는 데이터베이스 insert 문을 실행한 이후에 ID 값을 알 수 있다.
- IDENTITY 전략은 em.persist 시점에 즉시 insert문을 실행하고 DB에서 식별자를 조회한다.
- strategy = GenerationType.SEQUENCE
- 데이터베이스 시퀀스 오브젝트 사용
- ORABLE
- @SequenceGenerator 필요
- 속성
- name
- 식별자 생성기 이름
- sequenceName
- 데이터베이스에 등록되어 있는 시퀀스 이름
- initialValue
- DDL 생성 시에만 사용됨, 시퀀스 DDL을 생성할 때 처음 시작하는 수를 지정한다.
- allocationSize
- 시퀀스 한 번 호출에 증가하는 수
- 데이터베이스 시퀀스 값이 하나씩 증가하도록 설정되어 있으면 이 값을 반드시 1로 설정해야 한다.
- catalog, schema
- name
- strategy = GenerationType.TABLE
- 키 생성용 테이블 사용
- 모든 DB
- @TableGenerator 필요
- 속성
- name
- 식별자 생성기 이름
- table
- 키생성 테이블명
- pkColumnName
- 시퀀스 컬럼명
- valueColumnName
- 시퀀스 값 컬럼명
- pkColumnValue
- 키로 사용할 값 이름
- initialvalue
- 초기 값, 마지막으로 생성된 값이 기준이다.
- allocationSize
- 시퀀스 한 번 호출에 증가하는 수
- catalog, schema
- uniqueContrants(DDL)
- name
- strategy = GenerationType.AUTO
- DB 방언에 따라 자동 지정
- 기본값
- strategy = GenerationType.IDENTITY
'Java, Spring > JPA' 카테고리의 다른 글
JPA 상속관계 매핑 정리 (0) | 2022.09.17 |
---|---|
JPA 연관관계 정리 (0) | 2022.09.16 |
JPA 영속성 컨텍스트 정리 (0) | 2022.09.16 |
Spring Data JPA 정리 (0) | 2022.09.03 |
Spring JPA 기본 사용법 정리 (0) | 2022.09.03 |
Comments