기본 키 직접 할당 전략
- 기본키를 직접 할당하기 위해
@Id
어노테이션 사용
@Id
@Column(name="id")
private String id;
@Id
어노테이션은- 자바 기본
- 자바 래퍼
- String
- util.Date
- sql.Date
- math.BigDecimal
- math.BigInteger
- 직접 할당 전략은 어플 내에서 기본 키 직접 할당하고 엔티티를 저장하기 전에 이를 수행
Board board = new Board(); board.setId("id1"); em.persist(board);
IDENTITY 전략
- 기본 키 생성을 DB에 위임
- MYSQL, PostgreSQL , SQL server 등에서 사용
CREATE TABLE BOARD (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
DATA VARCHAR(255)
);
INSERT INTO BOARD (DATA) VALUES('A');
INSERT INTO BOARD (DATA) VALUES('B');
- ID 컬럼은 AUTO_INCREMENT 속성을 가지고 있기에,
- 데이터 저장 시 ID 컬럼 값을 명시 X , DB 자동으로 값 할당
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
- 식별자가 생성되는 경우
@GeneratedValue
사용- 전략 선택 필
- IDENTITY 전략 사용시 strategy 속성을 GenerationType.IDENTITY 로 지정
주의
- 엔티티가 영속 상태로 진입을 위해서는 식별자가 필수
- IDENTITY 전략은 DB에 엔티티를 저장후에만 식별자를 얻을 수 있음
em.persis()
호출시- 즉시 INSERT SQL 이 DB 전달
- 해당 행위는 쓰기 지연이 동작 하지 않음.
- JDBC3 의
Statement.getGeneratedKeys()
메서드 사용시
- 데이터 저장과 동시에 생성된 식별자 값을 얻을 수 있음
- 하이버네이트는 해당 메서드로 DB와 한번만 통신
- JDBC3 의
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[6단원] 다대다 : 연결 엔티티 사용 (0) | 2023.11.04 |
---|---|
[4단원] 기본 키 매핑 (0) | 2023.11.01 |
[4단원] 기본키 - SEQUENCE 전략 (0) | 2023.11.01 |
[4단원] 기본키 - TABLE , AUTOINCREMENT 전략 (0) | 2023.11.01 |
[4단원] JPA 필드와 컬럼 매핑 (0) | 2023.11.01 |