Spring 73

Spring Boot 22강 - 게시판 페이징 처리와 페이지네이션 구현

게시글이 많아질수록 한 번에 모두 보여주면화면도 복잡해지고 성능도 떨어집니다.Spring Data JPA의 Paging 기능을 이용하면자동으로 데이터를 쪼개서(page 단위로) 보여줄 수 있습니다.페이지네이션 UI도 손쉽게 구현할 수 있습니다.📌 예제 코드1) Repository: 페이징 쿼리 지원package com.mysite.sbb.question;import java.util.List;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.jpa.repository.JpaRepository;public interface Questi..

Spring Boot 21강 - 네비게이션 바를 Thymeleaf Fragment로 공통화하기

웹 서비스에서 상단 메뉴(네비게이션 바)는모든 페이지에 공통으로 들어가는 대표 UI입니다.Thymeleaf의 fragment 기능을 활용하면네비게이션 바 코드를 별도 파일로 분리해모든 레이아웃/페이지에서 재사용할 수 있습니다.📌 예제 코드(1) 네비게이션 바 fragment 정의 (navbar.html) 게시판 로그인 th:fragment="navbarFrgment"네비게이션 바 영역을 fragment로 등록(2) 레이아웃(기본 템플릿)에서 fragment 호출 (layout.html) ..

Spring Boot 20강 - Thymeleaf Fragment로 폼 에러 메시지 공통화하기

여러 화면에서 입력 폼 오류 메시지를 반복적으로 출력해야 할 때,Thymeleaf의 fragment(조각 템플릿) 기능을 활용하면에러 메시지 영역을 한 곳에 정의해두고 손쉽게 불러올 수 있습니다.이렇게 하면 유지보수와 코드 재사용성이 크게 좋아집니다.📌 예제 코드(1) 에러 메시지 fragment 정의 (form_errors.html) (2) 상세/답변 폼에서 fragment 불러오기 💬 코드 설명form_..

Spring Boot 19강 - 질문 등록에 Validation 적용하고 에러 메시지 출력하기

질문 등록(글쓰기) 시제목/내용 입력이 비었거나, 제목이 200자를 초과하면폼 검증을 통해 에러 메시지를 표시하고정상 입력 시에만 질문을 저장합니다.이 과정은 웹 서비스에서 데이터 무결성을 지키는 데 매우 중요합니다.📌 예제 코드QuestionForm.javapackage com.mysite.sbb.question;import jakarta.validation.constraints.NotEmpty;import jakarta.validation.constraints.Size;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class QuestionForm { @NotEmpty(message = "제목을 입력해주세요.") @Size..

Spring Boot 18강 - Validation을 활용한 답변 입력 검증과 에러 처리

실제 게시판에서 답글(댓글)을 입력할 때아무 내용도 없이 등록하면 곤란하겠죠?Spring의 Validation(검증) 기능을 활용하면입력값의 유효성 검사와 에러 메시지 처리를 아주 쉽게 구현할 수 있습니다.📌 주요 추가/수정 내용build.gradleimplementation 'org.springframework.boot:spring-boot-starter-validation'Spring Validation 라이브러리 추가AnswerForm.javapackage com.mysite.sbb.answer;import jakarta.validation.constraints.NotEmpty;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic clas..

Spring Boot 17강 - 질문 등록(글쓰기) 기능 구현하기

게시판에서 새로운 질문을 등록하려면글쓰기 폼 → 데이터 저장 → 목록 페이지로 이동하는 과정을 구현해야 합니다.스프링 부트에서는GET/POST 요청을 분리해폼 화면 제공과 데이터 저장 처리를 나눠서 구현합니다.📌 예제 코드QuestionController.javapackage com.mysite.sbb.question;import java.util.List;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVa..

Spring Boot 16강 - Bootstrap 카드 레이아웃으로 질문 상세/댓글 화면 꾸미기

Bootstrap의 카드(card) 컴포넌트와 다양한 유틸리티 클래스를 활용하면질문 상세 내용과 답변(댓글) 리스트를한눈에 보기 쉽고, 깔끔하게 디자인할 수 있습니다.이번 강의에서는 작성 날짜, 댓글 개수, 각 답변의 작성 일시까지정보를 풍부하게 표현하는 화면을 만들어봅니다.📌 예제 코드 (question_detail.html) ..

Spring Boot 15강 - Thymeleaf 레이아웃과 Bootstrap으로 게시판 화면 꾸미기

실제 서비스에서는 여러 화면에 공통 레이아웃(상단, 하단, CSS 등)을템플릿으로 분리하여 코드 중복을 줄이고, 디자인 일관성을 유지합니다.Thymeleaf의 레이아웃 기능과 Bootstrap CSS를 활용하면적은 코드로도 전문적인 게시판 화면을 만들 수 있습니다.📌 예제 코드(1) 기본 레이아웃 템플릿 - layout.html (2) 게시판 리스트 페이지 - question_list.html 자유게시판 번호 제목 작성일자 ..

[Spring Data JPA] JpaRepository 완전 정복 – 핵심 기능과 직접 SQL 쿼리 비교

✅ JpaRepository란?Spring Data JPA에서 제공하는 인터페이스로, JPA 기반의 데이터베이스 작업을 아주 쉽게 처리할 수 있도록 도와줍니다.JpaRepository를 상속받아 인터페이스를 작성하면, 복잡한 SQL 없이도 DB 테이블에 접근할 수 있습니다.📌 기본 구조public interface QuestionRepository extends JpaRepository { // 필요하면 여기에 커스텀 쿼리 메서드 추가}Question은 엔티티 클래스, Integer는 PK(Primary Key, 기본키)의 타입입니다.📌 제공 기능1. findAll() : 모든 데이터 조회SELECT * FROM question;2. findById(ID id) : id로 데이터 한 개 조회SE..

Spring Boot 14강 - 상세 페이지에서 답변(댓글) 목록 출력하기

질문 상세 페이지에서는질문 정보뿐 아니라 달린 답변(댓글) 목록도 함께 보여줘야 합니다.이번 강의에서는 답변의 개수를 표시하고,반복문으로 각 답변 내용을 리스트로 출력하는 방법을 다룹니다.📌 예제 코드 (question_detail.html) 💬 코드 설명th:text="${question.subject}", th:text="${question.content}": 질문 제목과 본문을 출력합니다.th:text="|${#lists.size(question.answerList)}개의 댓글이 있습니다.|": 현재 질문에 달린 답변(댓글) 개수를 동적으로 표시합니다.(예: "3개의 댓글이 있습니다.")th:each="answer : ${question.answerLis..

반응형