봄꾸
1k
2020-05-07 22:57:34 작성 2020-05-07 23:02:48 수정됨
2
258

Jpa @EmbeddedId Composite Key를 가진 Entity Persist시 생기는 이슈


현재 이슈가 발생하고 있는 엔티티는 다른 두 개의 테이블의 기본키를 외래키로 가지며 그 두개의 외래키 들을 엔티티의 기본키로 사용하고 있는 식별관계의 엔티티이고 @EmbeddedId 애노테이션으로 복합키를 가지고 있습니다.

(물론, 두 개의 외래키를 기본키로 사용하지 않고 별도의 기본 키를 두어 사용하면 해결된다는 것은 알고있습니다.)

JPA의 경우 @ID 필드에 값이 들어있는 경우 detach 상태로 간주하기 때문에 컨텍스트에 해당 식별키가 있는지 우선 검사하고 없는 경우 DB 까지 조회하고 없는 경우에 해당 엔티티를 영속화하기 때문에 Insert 쿼리 이전에 두 개의 키를 where 조건으로 1개의 Select 쿼리가 추가 발생하여 총 2개의 쿼리가 발생합니다.

원인은 알고 있고 회피 방법도 알고 있으나 식별관계의 복합키를 기본키로 갖는 엔티티의 경우 Insert 쿼리 이전에 발생하는 select 쿼리를 회피할 수 있는 해결 방안이 있을까요?(왠지 없을 것 같습니다...)

0
  • 답변 2

  • rebwon
    413
    2020-05-07 23:24:06 작성 2020-05-07 23:30:39 수정됨
    복합키를 기본키로 가진 엔티티를 insert 할때 발생하는 select라면 다른 두 테이블의 기본키를 select 해온다는 뜻인가요? 일대다 관계에서 연관된 엔티티 저장 전에 select를 우회하는거랑 비슷할 거 같은데..
  • 봄꾸
    1k
    2020-05-08 09:02:53

    아뇨 select 후 기본 키값을 얻어오는 상황은 아니고  참조되는 엔티티 또한 같이 영속화하는 상황입니다.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.