
✅ 더티 체킹(Dirty Checking) 트랜잭션 안에서 Enitity 변경이 일어났을 때 변경한 내용을 DB에 반영하는 것 더티 체킹 모를 때에는 Update 기능을 구현하기 위해서 아래와 같이 변경 부분만 다시 save 하는 코드를 작성했었다... @Transactional public Long boardUpdate(BoardUpdateDto dto) { Board origin = boardRepository.findById(dto.getId()) Board update = InquiryAnswer.builder() .id(origin.getId()) .content(dto.getContent()) .build(); return boardRepository.save(update).getId(); }..

JPA N+1? Jpa + Spring Boot를 통해 개발을 하다 보면 N+1문제를 마주칠 겁니다. 많이 다루는 Join Fetch, @EntityGraph를 통하여 해결하는데 어떻게 사용하고 단점은 무엇인지 정리해보겠습니다. ❗ 단방향 매핑 형태로 @ManyToOne인 한정된 예제로 진행하기 때문에 그외에 일어나는 해결방법은 다루지 않겠습니다. N+1문제는 이런 식으로 해결하는구나~ 정도만 이해할 수 있는 글입니다. N+1문제를 정리하기전에 테이블 구조를 통해 설명할게요 아래와 같이 member, board, category 테이블이 있습니다. JAVA Code로 구현 해보겠습니다. Memeber @Entity @Getter @NoArgsConstructor(access = AccessLevel.PR..
영속성(Persistence) 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재 -> 프로그램 종료 시 모두 사라짐 객체에 영속성을 부여한다면 프로그램이 종료되더라도 다시 같은 상태를 가지는 객체로 만듦 Persistence Layer 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층 Persistence Framework JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 개발 SQL mapper와 ORM으로 나누어진다. SQL Mapper SQL문을 이용하여 RDB에 접근, 데이터를 오브젝트(객체)화 시켜준다. 개발자가 작성한 SQL문으로 해당되는 ROW를 읽고 결과 값을 쿼리 수..