Spring boot 60

2. 에러 컨트롤러 및 커스텀 예외 처리 - @ControllerAdvice 활용

학습 목표1. @ControllerAdvice 개념: 전역 예외 처리의 중앙 집중화2. 커스텀 예외 클래스 : HTTP 상태 코드별 예외 정의3. @ ExceptionHandler: 예외 타입별 처리 메서드 매핑4. 예외 처리 흐름: 예외 발생 -> 핸들러 -> 에러 페이지 ----------------------------------------------------------------------------------------------------------------------------------------------------샘플 코드로 개념 확인// 전통적인 방식 (각 컨트롤러마다 try-catch)@Controllerpublic class BoardController { @Get..

Spring boot 2025.07.14

1. 에러 페이지 만들기

학습 목표1. HTTP 상태 코드별 에러 페이지 : 각 오류 상황에 맞는 페이지 제공2. 에러 메시지 표시: 동적으로 오류 내용 전달하기3. 사용자 경험 개선 : 시스템 오류를 사용자가 이해하기 쉽게 표현4. 템플릿 재사용: 공통 레이아웃을 활용한 일관된 디자인 주요 상태 코드 정의1XX: Informational(정보 제공)-임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미입니다. HTTP 1.1버전부터 추가되었습니다. 2XX: Success(성공)- 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미입니다.3XX: Redirection(리다이렉션)- 완전한 처리를 위해서 추가 동작이 필요한 경우입니다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그..

Spring boot 2025.07.14

버전 3 - 2. 게시 글 상세보기 - 연관 관계 기본 활용

package com.tenco.blog.board;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import java.util.List;@RequiredArgsConstructor // 생성자 자동 생성 + 멤버 변수 -> DI 처리 됨@Repository // IoC + 싱글톤 패턴 관리 + 스프링 컨테이너public class BoardRep..

Spring boot 2025.06.25

버전 3 -1 .연관관계 설정하기

| 게시글을 볼 때 작성자 정보도 함께 보고 싶다면 어떻게 해야 할까요? = 객체지향 사고 + DB JOIN 의 개념입니다. 샘플 데이터-- User 테이블 데이터 (5명의 사용자)INSERT INTO user_tb (username, password, email, created_at) VALUES('admin', '1234', 'admin@blog.com', NOW()),('ssar', '1234', 'ssar@nate.com', NOW()),('cos', '1234', 'cos@gmail.com', NOW()),('hong', '1234', 'hong@naver.com', NOW()),('kim', '1234', 'kim@daum.net', NOW());-- 2단계: Board 테이블 데이터 (10개..

Spring boot 2025.06.24

버전 3 - 빌더 패턴에 대해 알아 보기

빌더는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴입니다. [ 빌더 패턴 (Builder Pattern)의 장점]필요한 데이터만 설정할 수 있음유연성을 확보할 수 있음가독성을 높일 수 있음변경 가능성을 최소화할 수 있음 package com.tenco.blog.user;/*** 빌더 패턴을 사용해서 User 클래스를 설계해보자.*/public static User builder() { return new User();}// 2. 각각의 메버 메서드를 셋팅하는 메서드를 만들어 준다.public User id(Integer id){ this.id= id; return this; } public User username(String username){ this.username = u..

Spring boot 2025.06.24

버전-2 -5. 게시글 삭제하기 V2 - Persistence Context와 영속성 관리

영속성(Persistence)이란?- 영속성은 데이터가 영구적으로 보관되는 성질을 의미합니다. 프로그램이 종료되어도 데이터가 사라지지 않고 계속 존재하는 특성입니다. --------------------------------------------------------------------------------------------------------------------------------- BoardController package com.tenco.blog.board;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Control..

Spring boot 2025.06.24

버전 2- # 3. 게시글 상세보기 만들기 - Persistence Context와 1차 캐시 활용

조회가 두번 일어나면 캐싱이 된다 기본키 조회는 find() 메서드가 최적기본키로 단건 조회할 때는 EntityManger의 find() 메서드를 사용하는 것이 가장 효율적입니다.find() vs JPQL 비교- find(): 1차 캐시 활용, 기본키 최적화, 간단한 문법-JPQL : 복잡한 조건이나 조인이 필요할 때 사용==================================================================== package com.tenco.blog.board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import lombok.RequiredArgsConstructor;import ..

Spring boot 2025.06.24

버전 2 -2.게시글 목록 보기 - Persistence Context와 JPQL 활용

영속성 컨텍스트를 활용한 목록 조회v2에서는 Persistence Context의 장점을 활용하여 JPQL로 게시글 목록을 조회합니다.V1 vs V2 조회 방식 비교:V1: 네이티브 SQL 직접 작성(SELECT * FROM board_tb..)V2 : JPQL을 통한 객체지향적 조회(SELECT b FROM Board b..) =================================================================== BoardPersistRepositorypackage com.tenco.blog.board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import lombok.Requir..

Spring boot 2025.06.23

JPQL 핵심 개념과 대표 예시 코드 (1)

JPQL이란 ?JPQL(Java Persistence Query Language)은 엔티티 객체를 대상으로 하는 객체지향 쿼리 언어입니다. 엔티티 객체란?엔티티 객체는 데이터 베이스 테이블과 매핑된 자바 객체를 의미합니다.================================================================ 기본 문법 이해 더보기SQL vs JPQL 비교 // SQL (테이블 중심) select * from board_tb where username = 'ssar' //JPQL (엔티티 중심) SELECT b FROM b WHERE b.username = 'ssar' 핵심 차이점: -SQL : 테이블명(board_tb), 컬럼면 사용 - JPQL: 엔티티명(Board_t..

Spring boot 2025.06.23
728x90