결론부터 말하면
persist 가 호출되는 경우 영속화되고,
merge 가 호출되는 경우 영속화되지 않는다.
언제 persist 가 호출되고 언제 merge 가 호출되는지? : https://insanelysimple.tistory.com/300
public void test() {
AttributesMasterEntity entity = AttributesMasterEntity.builder()
.attributeType(EpsAttributeType.ATTRIBUTES_PETS)
.attributeIdByType("1234552134")
.koName("hello")
.build();
AttributesMasterEntity newEntity = repository.save(entity);
entity.setKoName("hi123");
System.out.println(entity == newEntity);
}
위 코드를 실행시키면 insert 쿼리가 실행되고 update 쿼리가 추가로 실행된다.
즉, 파라미터로 넘긴 entity 가 영속화되어 jpa 에서 변경을 감지했다.
public void test() {
AttributesMasterEntity entity = AttributesMasterEntity.builder()
.attributesMasterId(33333L)
.attributeType(EpsAttributeType.ATTRIBUTES_PETS)
.attributeIdByType("123455213")
.koName("hello")
.build();
AttributesMasterEntity newEntity = repository.save(entity);
entity.setKoName("hi123");
System.out.println(entity == newEntity);
}
select 이후 insert 쿼리만 실행되었다.
파라미터로 넘긴 entity 는 영속화 되지 않았다.