• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@GeneratedValue 전략 중 IDENTITY와 SEQUENCE 특징에 대해 질문 드립니다.

23.01.08 20:56 작성 23.01.08 22:38 수정 조회수 5.09k

3

기본 키 매핑 강의를 수강하다 키 생성 전략과 관련해 궁금한 점이 있어 질문 드립니다.

 

  1. IDENTITY 전략을 사용할 경우 키 값이 DB에 삽입된 이후에 생성되기 때문에, 트랜잭션 커밋 시점이 아닌 em.persist()를 호출할 시점에 쿼리를 DB로 전송한다고 하셨는데요.

    혹시 이 경우, 문제가 생겨 트랜잭션이 rollback 되는 경우 해당 insert문도 같이 rollback이 될까요?

 

  1. SEQUENCE 전략에서 auto-ddl 설정을 사용하지 않을 때에도 @SequenceGenerator 을 사용하여 기존에 사용 중인 DB 시퀀스와 매핑 시킬 수 있나요??

    어노테이션의 이름이 Generator라고 지정되어 있어 auto ddl을 사용하는 경우에만 해당 어노테이션이 유효한 건지에 대해 헷갈리더라구요..

    만약 기존에 DB에서 사용중이던 시퀀스와 매핑시키기 위해서는 @SequenceGenerator 의 SequenceName 속성만 잘 매칭시키면 성능 최적화 등의 전략을 사용할 수 있는 거겠죠..??

 

  1. 또한 SEQUENCE 전략 사용 시 성능 상의 이슈를 해결하기 위해 allocation을 50과 같이 큰 값으로 할당하여 DB 상에서 한 번에 크게 올리고 메모리에서는 1씩 가져다가 사용하는 방식에 대해 설명 해주시면서 동시성 이슈가 없다고 설명해 주셨는데요!

    여러 대의 was와 서로 다른 서버에서 기동되어 메모리가 공유되지 않는 상황에서도 동시성 보장이 가능한 것인가요??...

 

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요. John님

  1. 네 당연히 rollback 됩니다.

  2. 네 맞습니다. 시퀀스 이름을 주고 매핑하면 됩니다.

  3. 네 맞습니다. 동시성 보장이 됩니다.

감사합니다.