카테고리 없음

JPA 기본[PK] 키 매핑하기

jojelly 2022. 3. 14. 03:24
반응형

기본 키 매핑 어노테이션

  종류 2개

• @Id

• @GeneratedValue

 

 

직접 할당@Id만 사용

 

자동 생성: (@GeneratedValue)

(종류 4개)

IDENTITY: 데이터베이스에 위임, MYSQL

SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE

                   @SequenceGenerator 필요

TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용

            @TableGenerator 필요

AUTO: 방언에 따라 자동 지정, 기본값

 

 

 

 

 

IDENTITY는 db에게  ID자동생성을 위임하기 때문에 데이터 베이스에 저장이 되어야만 pk값을 알수 있다.

때문에 IDENTITY 는 예외적으로 db에 저장되기전에 persist를 했을때 id값( pk)을 받을 수 있도록  insert 문이 persist에서 실행된다.

단점: 캐시에 모아서 insert해줄 수 없다. 

ex.MYSQL

 

 

SEQUENCE는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트이다.

parsist할때 시퀀스에 가서 다음으로 들어갈 값을 받아와서(call next value for member_seq) 입력되면서 parsist된다. 

ex.오라클, PostgreSQL, DB2, H2 데이터베이스

 

 

 

 

db에 50까지 미리 확보하여 올려놓고 메모리를 1씩늘려서 51 까지쓰다 마주치면 다시 next call해주고 51+50하여 공간을 확보하고 어플리케이션은 52부터 쓰도록하는 식으로 해서 동시성 이슈 없이 하기위해 이런식으로 구조가 되어있다고 한다.

 

 

 

 

 

 

 

 

반응형