본문 바로가기
반응형

save3

[JPA] save 시 select 쿼리 발생 (Persistable 의 isNew 사용) 이전 포스팅에서 dirty checking 관련해서 글을 다룬적이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 엔티티를 가지고 작업을 하게 될 경우 매번 select 을 하고 update를 하거나 insert 를 할때 더티 체킹을 한다면 만약 bulk insert를 jpa에서 하게 될 경우엔 어떻게 해야할까? 별도의 작업이 없이 읽어서 insert를 하기만 하면된다. 코드는 아래와 같이 간단하다. TestTable ent = TestTable.builder() .id(id) .nameValue("test") .gender(1) .build(); repo.save(ent); 이대로 실행을 하면 [interceptor] requestURI : /test/entitysetnew Hibernate: .. 2024. 2. 7.
JPA메서드 save 와 saveAll 비교 Entity 를 사용하여 save를 할 경우 정상일 경우라면 insert 가 된다. saveAll 함수를 사용하게 될경우엔 List 를 형으로 받아서 처리를 해주고, 리스트를 bulk insert 처럼 삽입을 할수 있다. 둘의 성능 차이가 궁금해서 비교해보았다. 결국 SaveAll 함수 내부 로직을 보면 @Transactional @Override public List saveAll(Iterable entities) { Assert.notNull(entities, "Entities must not be null"); List result = new ArrayList(); for (S entity : entities) { result.add(save(entity)); } return result; } 이와.. 2024. 1. 19.
JPA메서드 save 와 saveAndFlush 비교 이전 포스팅에서 jpa 에 대해서도 다뤄봤고 영속 방법중 하나인 더티체킹에 대해서도 다뤘다. 아래 참고 포스팅을 확인 바람. 이번 포스팅에서는 더티체킹이 아닌 merger 방법으로 데이터를 영속하는 메서드인 save메서드에 대해서 다뤄볼 것이다. 일단 @Transactional 어노테이션을 붙이지 않을 경우는 새로운 Entity를 만들고 save/saveAndFlush 로 저장을 한다음 set으로 entity 의 값을 변경해주고 db에서 값을 확인해보면 save를 쓰는 경우나나 saveAndFlush를 쓰는 경우나 둘다 set을 할 경우 update 가 되지 않는다. @Transactional 어노테이션을 붙이는 경우에 save와 saveAndFlush를 비교를 하면 똑같이 메서드 종료 후 update가.. 2022. 12. 5.
반응형