JPA 에서의 업데이트 - 더티 체킹
Entity 에 대한 더티 체킹 을 통한 업데이트가 이뤄집니다.
JPA 에서는 Entity 를 업데이트 하기 위한 메소드가 별도로 존재하지 않습니다. JPA 에서의 업데이트는 엔티티 변경 과 더티 체킹 을 통해 업데이트가 이뤄집니다.
JPA 에서 엔티티를 변경하기 위해서는 변경하고자 하는 엔티티를 조회한 후 해당 엔티티의 값을 변경하면 트랜잭션을 커밋할 때 변경 감지(Dirty Checking) 가 동작해서 데이터베이스에 UPDATE SQL 이 실행하는 방식으로 Entity 에 대한 변경을 반영합니다.
@Override@Transactionalpublic ItemDto.Response modifyItemPrice(Long id, ItemDto.Request itemDto) {    // 1. 변경하고자 하는 Entity 를 조회합니다.    Optional<Item> optionalItem = itemRepository.findById(id);    if (optionalItem.isPresent()) {        Item item = optionalItem.get();        // 2. Entity 의 값을 변경합니다.        item.updatePrice(itemDto.getPrice());        return ItemDto.Response.toDto(item);    } else {        throw new RuntimeException("Item not found");    }}
Update 쿼리문 발생update    item set    item_type_id=?,    modified_date=?,    name=?,    price=?,    version=? where    id=?     and version=?
더티체크를 통한 업데이트의 한계더티 체킹을 통한 업데이트는 변경된 Entity 개수만큼 Update 문을 실행합니다. 그렇기 때문에 변경된 Entity 가 100개라면 100번의 Update 문이 실행되는 문제점이 있습니다.