이번에는 스프링 개발에 있어 필수적인 객체지향 설계 5가지 원칙인 SOLID를 가볍게 정리해보도록 하겠습니다. 객체지향 원칙이란? 객체지향 프로그래밍(OOP)은 소프트웨어 개발 방법 중 하나로, 현실 세계의 객체를 모델링하여 소프트웨어를 구현하는 방식입니다. 객체지향 프로그래밍에서는 데이터와 기능을 하나의 단위인 객체(object)로 묶어서 관리하며, 객체 간의 상호작용을 통해 프로그램을 구성합니다. SOLID 원칙의 정의와 목적 설명 객체지향 프로그래밍의 핵심 원칙으로는 SOLID 원칙이 있습니다. SOLID 원칙은 SRP, OCP, LSP, ISP, DIP 다섯 가지 원칙으로 구성되어 있으며, 각각 단일 책임 원칙, 개방-폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존 역전 원칙을 의미..
Authorization 헤더에 access token 정보를 주고 API 요청을 보낼 때, Member를 조회하는 과정에서 불필요한 쿼리 호출이 이루어지는 부분을 살펴보고 Entity Graph를 적용해서 해결해 보도록 하겠습니다. JwtAuthenticationFilter @RequiredArgsConstructor public class JwtAuthenticationFilter extends GenericFilterBean { private final TokenHelper accessTokenHelper; private final CustomUserDetailsService userDetailsService; @Override public void doFilter(ServletRequest req..
Entity Graph란? Entity Graph는 JPA(Java Persistence API)에서 제공하는 기능으로, 엔티티 객체를 가져올 때 연관된 엔티티 객체들을 함께 가져오는 방법을 지정하는 기능입니다. 일반적으로 JPA에서는 지연 로딩(lazy loading) 방식을 사용하여 연관된 엔티티 객체를 필요할 때 가져옵니다. 그러나 이 경우에는 연관된 엔티티 객체를 가져오는 쿼리가 지연 로딩 수행 시 매번 실행되어 성능상의 이슈가 발생할 수 있습니다. Entity Graph는 이러한 성능상의 이슈를 해결하기 위해, 한 번의 쿼리로 필요한 모든 엔티티 객체를 함께 가져오기 위한 방법을 제공합니다. 따라서 연관된 엔티티 객체를 여러 번 가져오지 않아도 되므로 성능상의 이점을 얻을 수 있습니다. Enti..