관리 메뉴

제뉴어리의 모든것

Repository.save시 유의 사항 본문

Spring Boot/Hibernate

Repository.save시 유의 사항

제뉴어리맨 2021. 1. 21. 13:53

Repository로 Entity를 save할때 해당 Entity의 PK가 AI같은 DB에서 자동 할당해주는 필드(DB에서 Unique를 보장하므로)가 아니고 사용자가 입력하여 지정되는 필드라면(ex: String) Insert 하기 전에 해당 PK(예를 들어 String 형식의 Email이라던가..)를 Where 조건절로 넣어서 해당 테이블을 한번 Select 해서 중복되는 데이터가 없는지 확인하고 Insert를 한다.

그리고 다른 테이블을 참조하는 테이블의 경우 자신의 테이블의 PK가 AI여도 참조하는 테이블의 필드가 String같은 필드라면 참조하는 테이블에 해당 필드값이 존재하는지 Where조건으로 참조하는 테이블을 한번 Select 한 뒤 Insert한다.

 

그러므로

 

A 테이블

if(PK -> AutoIncreament)   ==> Select 없이 그냥 Insert

 

B 테이블

if(PK -> String)   ==> 본인 테이블 Where Select -> Insert

 

C 테이블

if(PK -> AutoIncreament)   

if(참조테이블의 PK -> String)   ==> 참조테이블 Where Select -> Insert

 

D 테이블

if(PK -> AutoIncreament) 

if(참조테이블의 PK -> AutoIncreament)  => Select 없이 그냥 Insert