본문 바로가기

resultMap2

프로젝트 일지 - 쿼리 통합: 여러 번의 db접근을 감소시키자(with springboot, mysql, mybatis) 들어가기 현재 진행하는 프로젝트는 지도 위에 게시 글을 작성하는 웹 사이트이다. 게시글 페이지에 접근 시 위도, 경도의 정보와 게시글이 가지는 기본적인 정보 및 좋아요, 댓글, 댓글 좋아요 등 정보들을 확인할 수 있도록 하였다. 사용자가 게시글 페이지에 접근 시, 프론트 서버에서는 백엔드에 한번 접근 시 위 정보들을 모두 얻지만, 백엔드 서버에서 DB에 접근하는 횟수는 4번이다. DB 접근할 때마다 얻는 내용은 아래와 같다. 게시글 상세 정보 조회 게시글에 회원이 좋아요를 눌렀는지 조회 게시글에 달린 댓글 리스트 조회 댓글마다 회원이 좋아요를 눌렀는지 조회 게시글 페이지를 들어갈 시, 위 4번의 DB에 접근하는 메서드가 실행된다. 서버는 DB에 접근하는 경우에 비용이 발생하므로 최적화를 위해선 DB 접근.. 2023. 12. 25.
mybatis - ResultMap Collection을 통해 데이터 한번에 가져오기 프로젝트를 진행하던 중 member의 정보와 member가 작성한 article의 리스트, member가 속해 있는 group의 리스트를 가져와야 하는 기능을 구현해야 했다. member와 article와 group는 각각 테이블이고 member와 article는 일대다 관계, member와 group는 다대다 관계이며 중간에 member_group이라는 연결 테이블이 존재한다. member 정보 따로, article 리스트 따로, group 리스트 따로 구현하면 3번의 db접근이 일어난다. 그리고 설계를 잘못하면 N+1문제가 발생할 수 있다. 나는 이를 1번의 DB접근으로 표현하고 싶다. JPA에서는 fetch join 혹은 eager 한 방식으로 데이터를 가져오거나 배치사이즈를 조정하여 문제를 해결할.. 2023. 6. 18.