JPA on duplicate key update 와 같이 처리할 수 있는 방법이 없을까요?

2019-08-21 12:02

JPA 사용시

mysql/mariadb 에서 사용하는 on duplicate key update 를 사용할 수 없을까요?

@Id 에 해당하는 데이터가 이미 있다면 update 하거나 skip 하거나 하고 싶은데

어떤 데이터를 '수정' 하려고 할때 update 가 아닌 insert 가 되면서 duplicate key 에러가 발생하네요..

save 하는 로직마다 findById 해서 없을 때만 save 하게 하는것도 이상하고 ㅜㅜ

3개의 의견 from SLiPP

2019-08-23 16:37

단순히 on duplicate key update만 사용하신다면 위 링크의 @SQLInsert 어노테이션을 사용하시면 될꺼같습니다.

https://stackoverflow.com/questions/913341/can-hibernate-work-with-mysqls-on-duplicate-key-update-syntax

2019-08-24 13:01

저는 on duplicate key update 보다는 findById 를 한 후 save 를 추천합니다.

각 로직마다 jpa 에서 처리를 하는것도 상당히 복잡한 일이라 생각이 되고 또한 SQL 을 이용한 DB 로직보다는 JPA 기반의 자바 로직이 좀 더 관리하기가 편한거 같아서요.

DB 버전에 따라 다를 수 있는데요, 대규모의 insert ~~ on duplicated key update 에서는 db 부하가 늘어나 해당 로직을 변경하게 된 일도 겪어봤어요.

의견 추가하기

연관태그

← 목록으로