스프링데이터 JPA - 엔티티 식별자 직접할당시 save 성능 최적화(Persistable)
save의 기본동작은 식별자가 없으면 persist 식별자가 있으면 merge 이다. merge는 데이터베이스에서 식별자로 조회를 해본 후, 없으면 insert, 있으면 update이다.(비효율적이다) 그런데 식별자를 @GenerateValue로 자동 할당하지 않고 직접 할당하게되면 엔티티 save시, 무조건 식별자가 세팅되어 있음으로 merge를 하게된다. 이 문제를 엔티티에 Persistable 인터페이스를 구현함으로서 자동할당시 save와 동일한 성능을 유지할 수 있다. @Override public String getId() { return id; } @Override public boolean isNew() { return createdDate == null; } Persistable을 impl..
2021.02.08