기존 방법
DeliveryEntity delivery = this.deliveryRepository.findByTitle(title);
if (delivery == null) {
DeliveryEntity newDelivery = new DeliveryEntity();
newDelivery.setTitle("title1");
this.deliveryRepository.save(newDelivery);
}
jpa를 사용할 때 위와 같이 조회 한 이후에 없을 경우 생성해주곤 하는데 이렇게 할 경우 db를 두번 타야 한다.
임시 테이블을 활용
insert into `delivery` (
title
) select
'title1'
from dual
where not exists (
select
title
from `delivery`
where title = 'title1'
limit 1
)
임시 테이블에서 값을 찾아준 뒤에 insert해주면 된다.
pk로 insert를 하는 경우
insert ignore into `delivery` (`id`,`title`) values (1,'title1')
insert ignore into -- ignore만 붙여주면 된다.