JPA

    [JPA] Infinite Recursion

    JPA Infinite Recursion JPA를 활용하여 양방향 매핑을 선언했을 때 아래와 같은 에러가 발생할 수 있다. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion 컨트롤러에서 JSON 형태로 값을 출력할 때, 타입 변환이 필요하다. 이때 변환해야하는 엔티티의 필드가 다른 엔티티와 매핑 관계로 연결되어있다면 참조를 진행한다. 그리고, 이 연결된 엔티티에서도 함께 연결된 기존의 ..

    [Spring Data JPA] 더티 체킹 (Dirty Checking)

    [Spring Data JPA] 더티 체킹 (Dirty Checking) 트랜잭션 안에서 Entity의 변경이 일어났을 때 변경한 내용을 자동으로 DB에 반영하는 것 ORM 구현체 개발 시 더티 체킹이라는 말을 자주 볼 수 있다. 더티 체킹이 어떤 것을 뜻하는 지 간단히 살펴보자. JPA로 개발하는 경우 구현한 한 가지 기능을 예로 들어보자 ex) 주문 취소 기능 @Transactional public void cancelOrder(Long orderId) { //주문 엔티티 조회 Order order = orderRepository.findOne(orderId); //주문 취소 order.cancel(); } orderId를 통해 주문을 취소하는 메소드다. 데이터베이스에 반영하기 위해선, update와..