[JPA 긴급 학습 (2)] 기본키 관련
@Getter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Bakeries extends BaseEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bakery_id")
private Long id;
}
}
기본키는 두가지로 나뉜다.
직접할당할거냐, 자동 생성할거냐.
1. 직접할당
기본키를 어플리케이션에서 직접 할당한다.
즉, 내가 직접 값 바인딩해서 jpa한테 넘겨야한다.
@Id
어노테이션만 붙이면 된다.
(1) 자바 기본형
(2) 자바 Wrapper형
(3) String
(4) java.util.Date
(5) java.sql.Date
(6) java.math.BigDecimal
(7) java.math.BigInteger
위의 경우에만 @Id 어노테이션이 적용 가능하다.
2. 자동생성 - IDENTITY 전략
이건 기본키 생성을 DB에 위임한다.
DB가 알아서 생성한다.
굳이 내가 바인딩하지 않는다.
MySQL, PostgreSQL, SQL Server에서 주로 사용.
CREATE TABLE Board (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
)
인 DDL이라고 할 때,
DB에 레코드 저장 시 ID 칼럼을 비워두면 알아서 순서대로 채워준다.
이 경우에는
@GeneratedValue(Strategy = GenerationType.IDENTITY)
라고 기본키 필드 위에 붙인다.
가장 맨 위에 코드 있는 것처럼.
이 외에도 SEQUENCE전략, TABLE전략, AUTO 전략이 존재한다.
이렇게 다양한 이유는 DBMS마다 지원 방식이 다르기 때문.
오라클에서는 시퀀스가 존재하지만 MySQL에서는 없음.
급한건 프로젝트이므로 나중에 후술.
★★★★★
MySQL에서 실제로 기본키는 AUTO_INCREMENT로 지정하는게 성능 측면에서는 바람직하다고 함. 이 부분 정확히 정리할 필요 있음
★★★★★
Author And Source
이 문제에 관하여([JPA 긴급 학습 (2)] 기본키 관련), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@red_gunny/JPA-긴급-학습-2-기본키-관련저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)