728x90
반응형
항상 JPA로 엔티티를 만들때 id 값에다 붙이는 어노테이션. 전략이 여러 개 존재하여 같아 정리하고자 한다.
@Id 애너테이션
@Id 애너테이션은 JPA에서 엔티티의 기본 키를 정의할 때 사용됩니다. 엔티티 클래스 내에서 하나의 필드 또는 메소드에 @Id를 붙여 해당 필드가 데이터베이스에서 해당 엔티티를 고유하게 식별할 수 있는 기본 키임을 나타냅니다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
이렇게 어노테이션을 사용하고
@GeneratedValue에게 4가지 전략이 존재하는데
첫번째로
1. GenerationType.AUTO
- 설명: 기본 키 생성을 JPA 구현체에 위임합니다. 각 데이터베이스 벤더에 맞게 적절한 전략이 자동으로 선택됩니다.
- 특징: 데이터베이스에 따라 SEQUENCE나 IDENTITY 전략이 선택될 수 있습니다.
온전히 JPA에게 자동으로 부탁하는 전략.
2. GenerationType.IDENTITY
- 설명: 기본 키 생성을 데이터베이스에 맡깁니다. 데이터베이스에서 AUTO_INCREMENT 또는 IDENTITY 속성을 사용하여 기본 키를 생성합니다.
- 특징: 주로 MySQL, PostgreSQL 등에서 사용되며, 기본 키가 자동으로 증가하는 필드입니다. 새로운 레코드가 삽입될 때마다 기본 키 값이 자동으로 생성됩니다.
키 생성을 데이터베이스에게 맡기는 전략.
3. GenerationType.SEQUENCE
- 데이터베이스의 시퀀스를 사용하여 기본 키를 생성합니다.
- 이 전략은 주로 Oracle, PostgreSQL 같은 시퀀스를 지원하는 데이터베이스에서 사용됩니다. 시퀀스를 통해 키 값을 미리 가져온 다음 이를 엔티티에 할당합니다.
4. GenerationType.TABLE
- 별도의 테이블을 만들어 기본 키 값을 관리합니다.
- 이 전략은 데이터베이스 독립적이지만 성능이 다른 전략보다 떨어질 수 있습니다. 테이블을 통해 기본 키 값을 관리하므로 각 삽입 시 테이블을 조회하고 업데이트해야 하기 때문입니다.
728x90
반응형
'백엔드' 카테고리의 다른 글
[Spring Boot] Spring Security 내부 구조 파악하기 (0) | 2024.08.22 |
---|---|
[DevOps] Docker와 Jenkins를 이용한 CI/CD 구축 (1) (1) | 2024.08.15 |
[Spring Boot] 디렉터리 패키지 구조 - 도메인형, 계층형 (0) | 2024.08.11 |
[Spring Boot] IoC, DI, AOP 정리 (0) | 2024.08.11 |
[Spring Boot] Mapping 종류 (0) | 2024.08.11 |