JPA 4

insert, update, delete 주의 사항(쿼리 실행 순서)

쿼리 동작 우선 순위 Hibernate는 영속성 컨텍스트에 등록된 쿼리에 대해 아래와 같은 우선 순위에 맞춰 쿼리가 실행되도록 되어있다. 로직을 다음과 같이 구현하는 경우 flush를 반드시 사용해야 원하는 대로 동작한다. find, remove, update, insert 순으로 로직이 구현된 경우 > Hibernate는 find, update, insert, remove 순서로 쿼리를 실행하므로 원하지 않는 결과가 발생한다. 쿼리 실행 순서 1. Inserts, in the order they were performed 2. Updates 3. Deletion of collection elements 4. Insertion of collection elements 5. Deletes, in the o..

JPA/JPA 2020.11.11

변경 감지와 병합(merge)

준영속 엔티티 영속성 컨텍스트가 관리하지 않는 엔티티로 update해도 데이터는 변경되지 않음. 임의로 만들어낸 엔티티 Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); 준영속 엔티티 수정하는 방법(병합 사용은 추천하지 않음) 변경 감지 기능 사용(Dirty Checking), setter 대신 함수를 이용해서 변경하도록 하라 tem findItem = itemRepository.findOne(itemId); findItem.setPrice(bookParam.getPrice()); findItem.setName(bookParam.getName()); findItem.setStockQuantity(bookParam..

JPA/JPA 2020.06.09