티스토리 뷰
기본키 매핑 방법
- 직접 할당 : @Id 만 사용
- 자동생성 : @GeneratedValue 사용
- IDENTITY : 데이터 베이스에 위임. MySQL
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE, @SequenceGenerator 필요
- TABLE : 키 생성용 테이블, 모든 DB에서 사용, @TableGenerator 필요
- AUTO : 방언에 따라 자동 지정
IDENTITY 전략의 특징
- 기본키 생성을 데이터베이스에 위임
- 주로 MySQL, PostgreSQL, SQL Server, DB2 에서 사용
- JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행
- AUTO_INCREMENT 는 데이터베이스에 insert sql을 실행한 이후 ID 값을 알 수 있음
- IDENTITY 전략은 em.persist() 시점에 즉시 insert sql 을 실행하고 DB 에서 식별자를 조회
- IDENTITY 전략은 id에 값을 넣지 않고 데이터베이스에 insert 하는 것임
- ID 값을 데이터베이스에 insert 해야 알 수 있음
- em.persist로 데이터베이스에 값을 넣음 IDENTITY 의 경우.. (보통 commit 해야 insert 쿼리가 날아감)
TABLE 전략
- 키 생성 전용 테이블을 하나 만들어서 데이터베이스의 시퀀스를 흉내내는 전략
- 모든 데이터베이스에 적용이 가능하다는 장점이 있지만 성능이 좋지 않다는 단점을 가지고 있음
권장하는 식별자 전략
- 기본 키 제약 조건 : null 아님, 변하면 안됨
- 미래까지 이 조건을 만족하는 자연키를 찾기 어렵기 때문에 대리키(대체키)를 사용하여야 함
- 주민등록번호도 기본 키로 적절하지 않음
- 권장 : Long형 + 대체키(Sequence, UUID 사용 등..) + 키 생성전략 사용
'JPA' 카테고리의 다른 글
[JPA] 실전예제 1~2 (0) | 2023.07.29 |
---|---|
[JPA] 엔티티 매핑 (0) | 2023.07.09 |
[JPA] 영속성 컨텍스트 장점 (0) | 2023.07.09 |
[JPA] 영속성 컨텍스트 (0) | 2023.07.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 기술면접
- 람다식
- N+1
- Java
- 인덱스
- level0
- Til
- 운영체제
- 프로그래머스
- ddl-auto
- CodeDeploy
- 트랜잭션격리성
- Oracle
- spring
- ORA-27125
- JPA
- ci/cd
- graphql
- AWS
- EC2
- db
- SpringSecurity
- Travis CI
- TCP
- OS
- 파일업로드설정
- SpringGraphQL
- 트랜잭션
- 네이버클라우드
- nginx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함