JPA

CrudRepository로 save()를 사용하면 select가 먼저 실행됨

기기디 2021. 8. 18. 14:19

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를 실행시킨다