CrudRepository를 사용하여 save()를 실행시키면 종종 insert가 아닌 update가 일어나는걸 볼 수 있었는데
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#save(java.lang.Object)
*/
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
save()처리시 파라미터로 받은 엔티티를 isNew로 분기처리하여 persist나 merge를 시킨다.
엔티티에서 id값이 이미 존재한다면 persist가 아닌 merge를 실행시킨다