728x90

전체 글 217

[ JPA ] E-commerce 프로젝트 - 지연 로딩과 조회 성능 최적화(주문 조회 API)

Intro 안녕하세요. 환이s입니다👋 이전 포스팅에서는 회원 조회 API를 구현하면서,엔티티를 직접 노출하는 방식의 위험성과 이를 DTO 패턴으로 해결하는 구조적인 설계 방법에 대해 알아보았습니다. 오늘은 그 연장선에서, 주문 조회 API를 실제로 단계별로 구현해 보며JPA에서 자주 마주치는 지연 로딩 문제와 성능 최적화 전략을 하나씩 짚어보려 합니다. 단순히 Order만 조회하는 것이 아니라,연관된 Member, Delivery 정보까지 함께 조회하는 상황에서 어떤 문제가 발생할 수 있는지,그리고 이를 어떻게 해결해 나가는 것이 좋은지 4단계(V1~V4)로 나눠서 하나씩 살펴보겠습니다.조회용 샘플 데이터 추가 이번 예제에서 userA, userB라는 두 명의 회원이 각각 두 권의 책을 주문한 상황을..

[ ORM ]/JPA 2025.07.14

[ JPA ] E-commerce 프로젝트 - 회원 조회 API

Intro 안녕하세요. 환이s입니다👋 이전 포스팅에서 JPA를 활용한 회원 수정 API 구현 과정을 소개한 데 이어, 이번 글에서는 등록된 회원 정보를 조회하는 API를 어떻게 구성했는지 정리해보려 합니다. 그동안 회원 등록과 수정 API를 구현하며, DTO를 통한 계층 분리와 JPA의 변경 감지 기능을 중심으로 살펴보았는데요. 이번에는 회원 목록을 조회할 때, 엔티티를 그대로 반환하는 방식과 DTO로 변환해 반환하는 방식의 차이점, 그리고 실무에서 어떤 방식이 바람직한지에 대해 단계별로 설명해보려 합니다.회원 조회 V1 - 엔티티 직접 반환(지양해야 할 방식) 가장 단순한 형태의 회원 조회 API는 아래와 같이 엔티티를 직접 응답값으로 반환하는 방식입니다. 📌 코드 예시 @GetMapping..

[ ORM ]/JPA 2025.07.09

[ JPA ] E-commerce 프로젝트 - 회원 수정 API

Intro 안녕하세요. 환이s입니다👋 이전 포스팅에서 JPA를 활용한 회원 등록 API 구현 과정을 소개한 데 이어, 이번 글에서는 등록된 회원 정보를 수정하는 API를 어떻게 구성했는지 정리해보려 합니다. 회원 정보 수정은 대부분의 시스템에서 필수적인 기능이며, 단순한 작업처럼 보이지만 HTTP 메서드의 의미, DTO 처리 방식, JPA의 변경 감지 기능 등 고려해야 할 부분이 많습니다. 이번 글에서는 다음과 같은 흐름으로 회원 수정 기능을 구현해 봅니다.Controller - updateMemberV2 회원 수정 요청을 처리하는 컨트롤러 메서드는 @Putmapping을 사용하여 RESTful 한 방식으로 구현했습니다.URL 경로의 id는 수정 대상 회원의 고유 식별자이며, 요청 본문(@Reque..

[ ORM ]/JPA 2025.07.08

[ JPA ] E-commerce 프로젝트 - 회원 등록 API

Intro 안녕하세요. 환이s입니다👋 E-commerce 시스템을 구축하면서 가장 기본이자 중요한 기능 중 하나는 바로 회원 등록 기능입니다. 회원 등록은 단순히 사용자 정보를 저장하는 것을 넘어, 이후의 로그인, 주문, 결제 등 다양한 기능과 밀접하게 연결되기 때문에 신중하게 설계되어야 합니다. 이번 포스팅에서는 Spring Boot와 JPA를 활용한 E-commerce 프로젝트에서 회원 등록 API를 어떻게 구현했는지 소개하며, Controller와 Service 계층의 처리 방식까지 전반적인 구현 과정을 단계별로 설명드릴 예정입니다. 이번 예제에 사용되는 소스 코드는 이전 포스팅에서 다뤘던 내용을 기반으로 진행해 보겠습니다.해당 포스팅에서는 JPA를 활용한 각 도메인 개발 과정을 다뤘으니,..

[ ORM ]/JPA 2025.07.07

[ Concept ] Secure Coding(시큐어 코딩) 알아보기: 개념부터 예제까지

Intro  안녕하세요. 환이s입니다👋 프로젝트를 하다 보면 보안에 대한 고민을 할 수밖에 없는데요. 처음에는 기능을 구현하는 데 집중하다가도, 운영 단계에서 예상치 못한 취약점이 발견되거나 보안 검수를 받게 되면 '아, 미리 신경 쓸걸...' 하는 생각이 들죠. 실제로 많은 보안 사고가 단순한 코드 실수에서 발생하는 만큼, 애초에 안전한 방식으로 개발하는 게 중요합니다. 이번 글에서는 Java 시큐어 코딩(Secure Coding)에 대해 정리해 보려고 합니다. 보안 개념부터 주요 원칙, 그리고 실무에서 바로 적용할 수 있는 예제 코드까지 다룰 테니, 보안에 신경 쓰고 싶은 개발자라면 끝까지 읽어보세요! 🚀시큐어 코딩(Secure Coding)이란? 시큐어 코딩(Secure Coding)이란 보안 ..

[ Concept ] 2025.03.13

애플리케이션 성능 모니터링(APM) 시스템 프로젝트 후기

Intro 안녕하세요. 환이s입니다👋이전 프로젝트를 끝내고 바로 다음 프로젝트를 진행했는데, 오늘 무사히 문제없이 오픈할 수 있었습니다.시간이 흐를수록 점점 성장해나가는 제 모습이 느껴져서 스스로 대견하기도 하고, 하루하루가 더욱 뿌듯하고 행복합니다🙂 이번 프로젝트는 이전 프로젝트에 이어 두 번째 공공기관 프로젝트였는데요.첫 번째 경험 덕분인지 이번에는 일정에 맞춰 원활하게 마무리할 수 있었습니다😌그럼, 이번 프로젝트를 진행하면서 배운 점과 후기를 작성해 보겠습니다✌️개요  현재 다니고 있는 회사에서 두 번째로 진행한 프로젝트는 동적 시각화를 핵심 목표로 삼아, 실시간 모니터링, 성능 분석, 장애 예측 및 대응 기능을 갖춘 시스템을 구축하는 것이었습니다. 이를 통해 해상 교통 정보 서비스의 운영 및..

[ Project ]/Team 2025.02.24

[ Concept ] 서버 이중화 알아보기(Active-Active / Active-StandBy)

Intro 안녕하세요. 환이s입니다👋 디지털 시대에 접어들면서 기업의 온라인 서비스는 더욱 중요해졌습니다.고객들은 언제 어디서나 서비스를 이용할 수 있기를 기대하며, 서비스 중단은 곧 신뢰도 하락과 직결됩니다.  실제로, 유명 기업들이 경험한 서비스 장애는 수억 원의 손실을 초래하며, 브랜드 이미지에 심각한 타격을 주기도 했습니다. 이러한 이유로 서버 이중화는 현대 IT 환경에서 필수적인 전략으로 자리 잡았는데요. 이번 포스팅에서는 서버 이중화의 개념, 이중화 유형별 장단점, 필요성에 대해 살펴보겠습니다. 서버 이중화 ✅서버 이중화란 무엇인가? 서버 이중화는 동일한 기능을 수행하는 여러 대의 서버를 동시에 운영하는 기술입니다.이중화된 서버는 서로 연동하여 작업을 수행하며, 한 서버 장애가 발생할 경우 ..

[ Concept ] 2025.02.16

[ JPA ] 변경 감지(Dirty Checking)와 병합(Merge) 알아보기

Intro 안녕하세요. 환이s입니다👋이전 포스팅에서 주문 검색 기능을 JQPL, JPA 표준 Criteria 그리고 Querydsl을 활용해서 알아봤습니다.오늘은  JPA에서 데이터를 변경하는 방법에 대해 소개하고 변경 시에 주의할 점에 대해서 소개하려고 합니다🙂 데이터를 변경하는 방법에는 변경 감지(Dirty Checking)와 병합(Merge)기능이 JPA의 핵심적인 요소로, 애플리케이션의 성능과 데이터 일관성을 유지하는 데 중요한 역할을 합니다. 순차적으로 알아보겠습니다.준영속 엔티티 준영속 엔티티는 JPA에서 영속성 컨텍스트와의 연결이 끊어진 상태의 엔티티를 의미합니다. 즉, 엔티티가 처음에는 영속 상태로 관리되다가, 영속성 컨텍스트가 종료되거나 명시적으로 분리될 때 준영속 상태로 전환됩니다..

[ ORM ]/JPA 2025.01.18

[ JPA ] E-commerce 프로젝트 - 주문 검색 기능 개발 (JPQL,Criteria,Querydsl)

Intro안녕하세요. 환이s입니다👋이전 포스팅에서 주문 도메인 개발까지 알아봤습니다.이어서 앞서 말씀드린 주문 파트의 핵심인 검색 기능 개발을 진행하면서 JPA에서 동적 쿼리를 어떻게 해결하는지 알아보겠습니다🙂 주문 검색 기능 개발 먼저 주문 목록 페이지를 확인해 보겠습니다.  위 화면을 보면 주문상태를 검색조건으로 필터링할 수 있는 기능인 것을 확인할 수 있습니다.각 조건을 선택하면 해당 조건을 동적으로 추가하고 제거해야 하기 때문에 동적 쿼리가 필요하게 됩니다. 그렇다면 주문 도메인 개발 때 생성한 OrderRepository에 검색 로직을 추가해서 동적 쿼리를 생성해야 하는데, 그전에 검색 조건 파라미터 먼저 만들어 줍니다.  ✅ 검색 조건 파라미터 - OrderSearchpublic class..

[ ORM ]/JPA 2025.01.13

[ JPA ] E-commerce 프로젝트 - 주문 도메인 개발

Intro안녕하세요. 환이s입니다👋이전 포스팅에서 상품 도메인 개발까지 알아봤습니다.이어서 주문 도메인을 개발해 보겠습니다🙂 ✅ 구현 기능     1️⃣ 상품 주문     2️⃣ 주문 내역 조회     3️⃣ 주문 취소 ✅ 순서     1️⃣ 주문 엔티티, 주문상품 엔티티 개발     2️⃣ 주문 리포지토리 개발     3️⃣ 주문 서비스 개발     4️⃣ 주문 검색 기능 개발     5️⃣ 주문 기능 테스트주문, 주문상품 엔티티 개발 먼저 엔티티 내에 핵심 비즈니스 로직을 구현합니다. ✅ Order import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import j..

[ ORM ]/JPA 2025.01.11
728x90