2021. 2. 7. 15:54ㆍ프로그래밍 언어/Spring Framework
[인프런 김영한] JPA - 기본키 매핑 방법(@Id, @GeneratedValue)
해당 글은 인프런 김영한강사님의 영상을 보고 정리한 글입니다.
Spring Boot, Spring Data JPA를 사용해 실습하였습니다.
김영한 인프런 : www.inflearn.com/users/@yh
▣ 직접 할당
- @Id만 사용
@Id
private Long id;
▣ 자동 생성
- @GeneratedValue
- @GeneratedValue(strategy = 속성)
@Id
@GeneratedValue
private Long id;
- AUTO : 방언에 따라 자동 지정(Default)
- IDENTITY : 데이터베이스에 위임 (MYSQL, PostgreSQL, DB2 등)
> INSERT SQL을 실행 후 id값을 알 수 있음
> MYSQL는 auto_increment
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용 (Oracle, DB2, H2, PostgreSQL 등)
> DB에서 시퀀스 전략을 지원해야 사용할 수 있습니다.
> @SequenceGenerator와 함께 사용할 수 있으며 세부적으로 설정할 수 있습니다.
- TABLE : 키 생성용 테이블 사용
> 키생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략입니다.
> 모든 DB에서 지원하지만 단점으로는 테이블을 직접 사용하기 때문에 성능의 이슈가 있을 수 있습니다.
▣ 권장하는 식별자 전략
- 기본키 제약조건 : null이면 안됨, 유일해야함, 변하면 안됨. (주민등록번호도 기본키로 적절하지 않다.)
- 권장 : Long + 대체키 + Key 생성 전략
'프로그래밍 언어 > Spring Framework' 카테고리의 다른 글
[인프런 김영한] JPA - 상속관계 매핑 (0) | 2021.02.09 |
---|---|
[SpringMvc] Spring Interceptor 설정하기 (HandlerInterceptor) (0) | 2021.02.08 |
[인프런 김영한] JPA - 데이터베이스 스키마 자동생성 (0) | 2021.02.07 |
[인프런 김영한] JPA 연관관계 - 다양한 연관관계 (N:1, 1:N, 1:1, N:M) (0) | 2021.02.05 |
[인프런 김영한] 연관관계 매핑 기초 - 단방향 연관관계 (0) | 2021.02.04 |