Java Framework/Spring Boot 13

[Lombok] AccessLevel

AccessLevel Lombok에서 제공하는 열거형(enum)으로, 어노테이션(@Builder, @NoArgsConstructor, @AllArgsConstructor 등)이 생성하는 메서드나 생성자의 접근 제어자를 지정할 수 있다.🔑 AccessLevel 종류와 의미AccessLevel설명PUBLICpublic 접근자 (어디서나 호출 가능)PROTECTEDprotected 접근자 (같은 패키지 또는 자식 클래스에서만 접근 가능)PACKAGE / MODULE패키지 전용 접근자 (package-private)PRIVATEprivate 접근자 (클래스 내부에서만 사용 가능)NONE아예 생성하지 않음 (생성자나 메서드를 생성하지 않도록 설정)예시 @Builder(access = AccessLevel.PRI..

[Spring Boot] Generic

Generic제네릭(Generic)은 클래스나 메서드에서 사용할 데이터 타입을 컴파일 타임에 미리 지정하지 않고, 필요할 때 지정할 수 있도록 해주는 기능입니다. 즉, 다양한 타입의 데이터를 처리할 수 있도록 유연성을 제공하는 기능입니다.제네릭 는 타입 파라미터로, 다양한 타입의 데이터를 담을 수 있게 해줍니다.Generic@JsonInclude(JsonInclude.Include.NON_NULL)@AllArgsConstructor@Getterpublic class RsData { // 제네릭 타입 T 선언 private String resultCode; private String msg; private T data; // 제네릭 타입을 가진 변수 public RsData(Strin..

[Spring Boot] JpaRepository Optional

JpaRepository의 findById()public interface JpaRepository { Optional findById(ID id); // ID로 엔티티를 찾을 때 Optional 반환} 왜 Optional을 사용하나요?1. 존재하지 않는 ID 조회 가능성// id=999인 게시글이 없을 때Post post = postRepository.findById(999L).get(); // NoSuchElementException 발생 2. null 체크의 명시적 처리// 예전 방식 (null 체크)Post post = postRepository.findById(id);if (post == null) { throw new PostNotFoundException();}// Option..

[Spring Boot] Thymeleaf 템플릿 상속 (Template Inheritance)

템플릿 상속 (Template Inheritance)템플릿 상속(Template Inheritance)은 웹 페이지의 공통적인 구조를 정의한 뒤, 이를 기반으로 다른 페이지들이 해당 구조를 재사용하도록 하는 기법입니다. ex. 웹사이트의 공통 구조헤더(Header) : 로고, 네비게이션 메뉴 등 상단에 항상 표시되는 영역본문(Main Content) : 페이지마다 내용이 달라지는 영역푸터(Footer) : 저작권 표시, 연락처 등 하단에 항상 표시되는 영역이 공통 구조를 매 페이지마다 반복해서 작성하면 번거롭고 비효율적입니다. 템플릿 상속은 이러한 문제를 해결하기 위해 사용됩니다.작동 방식 1. th:replaceThymeleaf에서 템플릿 상속을 구현할 때, 하위 템플릿이 공통 템플릿의 특정 부분을 교..

[Spring Boot] PRG 패턴

PRG 패턴PRG는 사용자가 데이터를 제출(POST)한 후, 결과 페이지를 직접 보여주는 대신 다른 URL로 리다이렉트(redirect)하여 GET 요청을 수행하는 설계 패턴입니다. 이 과정은 크게 세 단계로 나뉩니다.POST 요청 : 사용자가 데이터를 제출합니다. 예를 들어, 폼(form)을 통해 상품 주문 정보를 서버로 전송합니다.리다이렉트(redirect) : 서버는 데이터를 처리한 뒤 클라이언트(사용자의 브라우저)에게 다른 URL로 이동하라고 응답합니다.GET 요청 : 클라이언트는 리다이렉트된 URL에 접근하여 결과 페이지를 봅니다.왜 필요할까요?중복 데이터 처리 방지 : 사용자가 새로고침할 때마다 동일한 POST 요청이 반복되지 않도록 합니다.사용자 경험 개선 : 잘못된 새로고침으로 인해 발생할..

[Spring Boot] DTO(Data Transfer Object)

DTO(Data Transfer Object)DTO(Data Transfer Object)는 개발 과정에서 자주 등장하는 개념으로, 데이터를 전달하기 위한 객체입니다. 주로 계층 간 데이터 교환을 목적으로 사용되며, 시스템을 설계할 때 중요한 역할을 합니다.  현대적인 애플리케이션은 컨트롤러, 서비스, 리포지터리 같은 여러 계층으로 나뉘어 동작합니다.이 계층 간에 데이터를 주고받을 때, 직접적으로 데이터를 전달하는 것이 아닌 DTO를 사용하여 데이터를 캡슐화합니다.DTO 활용 : 엔티티(Entity)DTO를 활용하여 엔티티(Entity)에 있는 민감한 정보를 제외한 데이터를 전달할 수 있습니다. 1. 엔티티(Entity)엔티티는 데이터베이스와 직접 연결된 객체입니다.데이터베이스의 테이블 구조를 자바 객체..

[Spring Boot] Thymeleaf 속성

Thymeleaf https://annovation.tistory.com/102주요 속성 1. 조건문 th:if조건이 참(true)일 때 요소를 표시Question exists!  태그HTML에서 문단(paragraph)을 나타내는 태그입니다.이 안에 "Question exists!"라는 텍스트가 출력됩니다.th:if="${question != null}"Thymeleaf의 조건문 속성입니다.question이라는 서버에서 전달된 데이터가 null이 아닌 경우(true)에만 이  태그가 렌더링됩니다."Question exists!"조건이 만족되었을 때, 즉 question != null인 경우 사용자에게 보여질 텍스트입니다. 2. 조건문 th:unless조건이 거짓(false)일 때 요소를 표시Questi..

[Spring Boot] 템플릿 엔진 (Template Engines)

템플릿 엔진 템플릿 엔진은 HTML 같은 고정된 구조와 서버에서 제공하는 동적인 데이터를 결합하여 최종 결과를 생성하는 도구입니다.고정된 구조 : HTML 코드 (ex. 제목, 표, 버튼 등)동적인 데이터 : 서버에서 제공하는 값 (ex. 사용자 이름, 상품 목록)동작 방식 클라이언트(웹 브라우저)가 서버에 요청을 보냅니다.서버는 데이터베이스나 비즈니스 로직을 통해 필요한 데이터를 준비합니다.템플릿 엔진이 HTML 템플릿과 데이터를 결합해 최종 HTML을 생성합니다.클라이언트는 생성된 HTML을 받아 화면에 표시합니다.특징 동적 웹 페이지 생성 : 사용자의 요청에 따라 변경되는 웹 페이지(ex. 사용자 맞춤 대시보드)를 쉽게 구현할 수 있습니다.개발자와 디자이너의 협업 : 디자이너는 HTML 구조를 작업..

[Spring Boot] Custom Query의 SQL 연산자

Custom QuerySQL 연산자Spring Data JPA  메서드 예시설명ANDfindBySubjectAndContent(String subject, String content)두 조건(Subject와 Content)을 모두 만족하는 데이터를 검색ORfindBySubjectOrContent(String subject, String content)두 조건 중 하나라도 만족하는 데이터를 검색BETWEENfindByCreateDateBetween(LocalDateTime start, LocalDateTime end)날짜나 값이 주어진 범위 내에 포함되는 데이터를 검색LESS THAN (findByIdLessThan(Integer id)특정 값보다 작은 데이터를 검색LESS THAN EQUAL (findB..

[Spring Boot] JpaRepository

JpaRepositorySpring Data JPA에서 제공하는 인터페이스로, 데이터베이스와의 CRUD 작업(Create, Read, Update, Delete)을 자동으로 처리합니다.SQL 쿼리를 직접 작성할 필요 없이, 데이터를 더 쉽고 간단하게 처리할 수 있습니다.데이터베이스와 객체 간의 매핑을 자동화하여 개발 시간을 줄여줍니다.계층 구조 Spring Data JPA는 다양한 인터페이스 계층을 제공하며, JpaRepository는 이 중 하나입니다.Repository : 모든 저장소(repository)의 공통 인터페이스CrudRepository : 기본적인 CRUD(Create, Read, Update, Delete) 작업을 위한 인터페이스PagingAndSortingRepository : 페이징..

반응형