개요Spring 기반의 프로젝트를 살펴보면, Service와 ServiceImpl로 나누어진 구조를 자주 접하게 됩니다. 그런데 저는 개인 프로젝트나 팀 프로젝트를 진행할 때에는 별도로 ServiceImpl을 두지 않고 하나의 Service 클래스에서 비즈니스 로직을 구현하곤 했습니다. 하지만 실제 업무에서 코드를 분석하다 보니, 많은 프로젝트들이 Service와 ServiceImpl을 분리하는 방식을 택하고 있었습니다. 이 글에서는 왜 Service와 ServiceImpl을 분리하는지, 이러한 구조를 채택한 이유에 대해서 정리하고자 합니다. 분리하는 이유는❓1. 유지보수성Service는 인터페이스로 정의하고, ServiceImpl에서 실제 구현을 담당하는 방식은 결합도를 낮추고 변경에 유연하게 대응할..
Framework/Spring\Spring boot
개요Spring boot를 사용한 백엔드 개발을 하다보면 자연스럽게 JSON데이터를 객체로 매핑해야하는 경우가 있습니다. 이러한 Java 객체와 JSON 간의 변환 작업, 즉 '직렬화(Serialization)'와 '역직렬화(Deserialization)'는 매우 중요한 과정인데, 본 글에서는 이 과정을 효율적으로 처리하기 위한 강력한 도구인 ObjectMapper에 대해서 정리하고자 합니다. 직렬화 & 역직렬화란❓직렬화(Serialization) 직렬화는 객체의 상태를 바이트 스트림이나 다른 형식(JSON, XML 등)으로 변환하는 과정입니다. 이 과정을 통해 메모리에 존재하는 객체를 외부에서 사용할 수 있는 형태로 변환합니다. 주요 목적:네트워크를 통한 데이터 전송파일 시스템에 데이터 저장다른 시..
개요Spring Boot 애플리케이션에서 DTO(Data Transfer Object)와 Entity 간의 변환은 시스템 설계와 아키텍처에서 중요한 결정 사항 중 하나입니다. DTO는 주로 클라이언트와의 데이터 교환을 목적으로 하고, Entity는 데이터베이스와 상호작용하는 도메인 객체로 사용됩니다. 이 두 가지 객체의 변환은 애플리케이션의 데이터 흐름에서 필수적인 과정이지만, 변환을 어디에서 수행할지에 따라 코드의 가독성, 유지보수성, 그리고 성능에 큰 영향을 미칩니다. 이 블로그 포스트에서는 DTO와 Entity 간 변환을 어느 Layer에서 수행하는 것이 가장 적절한지 살펴보겠습니다. DTO를 사용하는 이유는❓Entity는 종종 민감한 정보나 불필요한 정보를 포함하고 있습니다. DTO를 사용하..
Spring Framework에서 제공하는 캐싱 기능은 애플리케이션의 성능을 극대화하는 중요한 도구입니다. 캐싱을 통해 불필요한 데이터베이스 쿼리나 복잡한 계산을 줄일 수 있으며, 이로 인해 시스템의 응답 시간이 크게 향상됩니다. 본 글은 Spring의 Cache Manager와 @Cacheable 어노테이션에 대해 공부한 내용을 정리한 글입니다. Cache Manager란❓Cache Manager는 Spring에서 캐시를 관리하는 핵심 컴포넌트입니다. 애플리케이션 전반에 걸쳐 캐시를 구성하고 관리하는 역할을 담당하며, 다양한 캐시 저장소를 지원합니다. CacheManager 인터페이스는 여러 캐시를 관리할 수 있는 기능을 제공하며, 각 캐시는 Cache 인터페이스로 표현됩니다.Cache Manager..