전체 글 55

AWS - RDS란? 그리고 RDS를 활용한 팀 프로젝트

RDS란?RDS(Amazon Relational Database Service)는AWS에서 제공하는 클라우드 기반의 관계형 데이터베이스 서비스왜 쓰는가?협업 프로젝트나 실무에서, 팀원 모두가 접근 가능한 공용 DB 환경이 필요할 때RDS는 가장 간편하고 안정적인 선택이다!! 팀 프로젝트를 진행하면서, 각자의 로컬 환경(MySQL 버전, 설정 등)이 달라 DB 스키마 충돌이나 데이터 불일치 문제가 발생할 수 있다는 우려가 있었다.이러한 환경 차이를 최소화하고, 팀 전체가 동일한 DB 환경에서 개발과 테스트를 진행할 수 있도록 하기 위해,AWS RDS(MySQL)를 사용하게 되었다. AWS 자격증 따면서 공부한 내용을 실제 사용하게되다니 기분이 조금 좋았다.. RDS 생성 과정AWS 콘솔 → RDS 서비스..

Spring 2025.04.30

아웃소싱 프로젝트 - 소프트 딜리트(SoftDelete) 트러블 슈팅

소프트 딜리트는 "진짜 삭제" 대신 "숨기기"를 해서, 복구성과 감사성, 데이터 안정성을 높이기 위한 기술이다. 유저나 리뷰, 댓들-facing 데이터는 삭제해도 복구 가능성과 운영 안정성을 위해 소프트 딜리트를 적용했다하지만, 장바구니는 Hard Delete를 선택했다. 장바구니는 본질적으로 임시 저장소에 가까운 데이터다. 사용자가 상품을 담고, 주문을 완료하거나 장바구니를 비우는 흐름이 반복되기 때문에, 삭제된 장바구니 데이터를 복구해야 할 필요성이 거의 없다. 오히려 삭제된 데이터를 계속 남겨두면 데이터량이 불필요하게 쌓이기에, 장바구니(Cart)와 같은 경우에는 소프트 딜리트 대신 Hard Delete(완전 삭제) 방식을 선택해 관리 효율성과 성능을 높였다. ✅ 문제 상황Store, Revi..

Spring 2025.04.29

Servlet Filter

Servlet Filter는 웹 애플리케이션에서 요청(request)과 응답(response)을 가로채어 사전/사후 처리를 할 수 있는 기능을 제공한다.Filter는 서블릿 컨테이너(Tomcat 등)의 DispatcherServlet 이전에 동작한다. 주 역할:인증/인가 체크로깅✅ Filter 동작 흐름요청 흐름 (Request)클라이언트가 서버로 HTTP 요청 전송WAS가 요청을 수신등록된 Filter들이 설정된 순서대로 요청을 가로채 전처리 수행DispatcherServlet → Controller → Service → DB 등의 처리 진행응답 흐름 (Response)Controller에서 처리한 결과가 응답으로 생성됨Filter들이 역순으로 응답 후처리 수행최종적으로 클라이언트에게 응답 전달✅ Fi..

Spring 2025.04.22

Spring - 심화 주차 과제 세션

과제 실습 코드 GitHub - younseung-Lee/spring-advancedContribute to younseung-Lee/spring-advanced development by creating an account on GitHub.github.com ✅ 기능 요구 사항일주일 간 강의와 과제 세션이 있다 보니 시간이 촉박하여, 필수 기능까지만 구현했다..해설세션을 듣고 나머지 도전기능을 알아 볼 생각이다. Lv1. 코드 개선은 저번 블로그에 정리하였다.https://lys5654.tistory.com/52 Early Return 패턴Early Return 패턴: 조건이 맞지 않으면 일찍 반환(early return) 해서 아래 코드의 실행을 피하는 구조이다. ✅ Early Return 패..

Spring 2025.04.21

Early Return 패턴

Early Return 패턴: 조건이 맞지 않으면 일찍 반환(early return) 해서 아래 코드의 실행을 피하는 구조이다. ✅ Early Return 패턴을 사용하면 좋은 점중첩된 if 줄이기가독성이 향상된다.불필요한 연산을 제거한다.실패 상황을 먼저 처리하고 성공 흐름만 아래로 자연스럽게 이어지게 한다. ✅ 코드 예시※ userRepository.existsByEmail(String email) : 이 메서드는 Spring Data JPA에서 제공하는 쿼리 메서드(Query Method) 로, User 테이블에서 특정 이메일을 가진 사용자가 존재하는지 여부(true/false)를 반환해 주는 기능이다. @Transactional public SignupResponse signup(Si..

Spring 2025.04.17

JPA 연관관계

✅ 연관관계 매핑이란? JPA에서는 RDB의 외래 키 기반 관계(FK)를 객체 간에 참조로 매핑한다.SQL 없이 객체지향적으로 테이블 간의 관계를 활용 가능 ✅ 연관관계 종류 1️⃣ 단방향한 쪽 엔티티만 다른 엔티티를 참조 (객체 그래프 탐색이 한 방향만 가능)2️⃣ 양방향양쪽 모두 서로 참조연관관계의 주인이 존재 (외래 키 관리하는 엔티티)주인만 DB에 반영, 반대쪽은 단순 조회용객체 기준 단방향 2개 = 양방향 ✅ 연관관계의 주인JPA는 양방향 연관관계에서 외래 키(Foreign Key)를 기준으로 연관관계를 설정한다.이때 DB의 외래 키를 실제로 관리하는 쪽이 연관관계의 주인이 된다. 반대쪽은 단순히 연관관계를 표현하기만 한다.양방향 연관관계에서는 외래 키를 가진 주인 엔티티에서만 insert/..

Spring 2025.04.16

HttpMessageConverter

✅ HttpMessageConverter 개요 HttpMessageConverter는 HTTP 요청(Request) 또는 HTTP 응답(Response) 의 본문(Body) 내용을 Java 객체 ↔ HTTP 메시지로 변환(직렬화/역직렬화) 해주는 Spring Framework의 인터페이스이다. HttpMessageConverter는 Spring에서 HTTP 요청과 응답의 본문을 Java 객체로 변환하거나 Java 객체를 HTTP 메시지로 직렬화해주는 인터페이스로, 주로 REST API 개발에서 사용되며, 요청의 Content-Type과 응답의 Accept 헤더를 기준으로 JSON, XML, 문자열, 바이트 배열 등 다양한 형식의 데이터를 자동으로 처리해준다. ✅ 사용 예시 예시 1: String 처..

Spring 2025.04.15

뉴스피드 프로젝트 트러블 슈팅

어떤 방식이 팔로우 요청의 수락/거절을 처리하기 좋은 방식일까? "팔로우 요청을 수락할지, 거절할지 — 이걸 어떻게 입력받아야 할까?" 팔로우 요청의 응답은 수락 혹은 거절 — 결국 선택지는 딱 두 가지였다.그래서 저는 가장 단순하면서도 명확한 방법, 바로 Boolean 방식을 선택했다 Boolean 방식의 응답 처리🔹 개요Boolean 방식은 true 또는 false라는 이진 논리값을 사용하여 시스템 내의 결정을 처리하는 방식이다.팔로우 요청과 같이 응답이 "수락" 또는 "거절" 두 가지로 한정되는 경우, Boolean은 가장 단순하고 효율적인 선택이다. accept: true → 요청 수락reject: false → 요청 거절※ 실제 구현 시에는 하나의 필드만 사용하고, 해당 필드의 Boole..

Spring 2025.04.14

JPQL이란? (@Query)

JPQL (Java Persistence Query Language)은 JPA에서 사용하는 객체 지향 쿼리 언어이다.JPQL은 엔티티(Entity)와 그 필드(Field)를 기준으로 데이터를 조회한다. 📌 JPQL을 사용하는 이유 JPQL은 객체 지향적인 쿼리 언어로, SQL과 달리 데이터베이스 테이블이 아닌 엔티티 객체를 기준으로 쿼리를 작성한다. 이를 통해 코드가 더욱 직관적으로 변한다. 또한 JPQL은 JPA가 내부적으로 SQL로 변환하여 실행하므로, 데이터베이스에 종속되지 않고 이식성이 높다. 이런 특징 덕분에 시스템 구조나 테이블이 변경되더라도 유지보수가 쉬운 코드 작성이 가능하다.    📌 JPQL 문법 요약JPQL문법은 SQL 문법이랑은 차이가 있다. SQL JPQL SELECT * ..

Spring 2025.04.10

1:N, M:N 관계에서의 외래키 설계와 테이블 명명법

다대다(M:N) 및 일대다(1:N) 관계에서 FK(외래키)를 어떻게 명명하고 어떤 테이블 구조로 구성하면 좋을지 알아보자.  📌 다대다, 일대다 기본 개념 정리관계 타입설명 1:N (일대다)A는 여러 B를 가질 수 있음, B는 하나의 A만 가짐M:N (다대다)A는 여러 B를, B도 여러 A를 가질 수 있음 → 보통 중간 테이블로 풀어냄   📌 일대다(1:N) 관계 – FK 위치 & 명명 규칙User ↔  Post한 유저는 여러 개의 게시글을 가질 수 있음FK는 다 쪽 테이블에 들어감-- user 테이블CREATE TABLE users ( id BIGINT PRIMARY KEY,);-- post 테이블CREATE TABLE posts ( id BIGINT PRIMARY KEY, user_id BI..

SQL 2025.04.09