Java 275

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 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..

[ 53일차 8~14 ] 수업 정리 - Spring boot

오늘은 Spring Boot 기반 Q&A 게시판 구현의 심화 내용으로, 질문 목록과 상세 페이지, 답변 등록, 예외 처리 등을 중심으로 학습했습니다.📌 주요 학습 내용📌 QuestionRepository 인터페이스public interface QuestionRepository extends JpaRepository { Question findBySubject(String subject); Question findBySubjectAndContent(String subject, String content); List findBySubjectLike(String subject);}Spring Data JPA의 메서드 이름 기반 쿼리 기능을 활용하여 다양한 조회 메서드를 정의.📌 Quest..

국비 2025.07.02

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..

Spring Boot 13강 - 답변 등록 로직 구현하기

상세 페이지에서 입력한 답변(댓글)을실제로 데이터베이스에 저장하려면컨트롤러와 서비스 계층에서 로직을 구현해야 합니다.답글이 등록되면 해당 질문의 상세 페이지로 바로 이동시키는 것이 일반적입니다.📌 예제 코드AnswerController.javapackage com.mysite.sbb.answer;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframewo..

Spring Boot 12강 - 상세 페이지에서 질문 내용 출력과 답글 작성 폼 만들기

질문 목록에서 제목을 클릭하면상세 페이지로 이동하여 질문 제목과 내용을 확인할 수 있습니다.또한, 답변을 등록할 수 있는 폼(form)도 함께 제공해실제 사용자 입력을 받아 처리할 수 있도록 만듭니다.📌 예제 코드 (question_detail.html) 💬 코드 설명th:text="${question.subject}"컨트롤러에서 모델로 전달받은 question.subject(질문 제목)를 출력합니다.th:text="${question.content}"질문의 본문(내용)을 출력합니다.답글 등록 폼(form)th:action="@{|/answer/create/${question.id}|}"답변 등록 요청이 /answer/create/질문번호로 POST 방식으로 전송됩니다.textarea사용..

Spring Boot 11강 - 상세 페이지 구현과 NotFound 예외 처리

목록에서 제목을 클릭하면각 질문의 상세 페이지로 이동하게 하려면,컨트롤러에서 id를 받아 해당 데이터를 조회해 뷰에 전달해야 합니다.또, 존재하지 않는 id로 접근 시 404 오류를 처리하는 방법도 같이 알아봅니다.📌 예제 코드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.Pat..

Spring Boot 10강 - Thymeleaf로 질문 목록 테이블 출력하기

스프링 부트에서는 Thymeleaf 템플릿 엔진을 사용해컨트롤러에서 전달한 데이터를 HTML에 쉽게 출력할 수 있습니다.이번 강의에서는 questionList를 반복문으로 출력하여질문 제목과 작성일자를 테이블로 만드는 방법을 다룹니다.📌 예제 코드 (question_list.html) 제목 작성일자 💬 코드 설명th:each="question : ${questionList}": questionList에 들어있는 각 question 객체를 반복해서 한 줄씩 출력합니다.th:text="${q..

Spring Boot 9강 - Service 계층과 Controller에서 데이터 조회 및 뷰 연결

스프링 부트에서는 Controller → Service → Repository 계층 구조를 통해비즈니스 로직과 데이터 접근을 분리하여,코드의 유지보수성과 확장성을 높일 수 있습니다.이번 강의에서는 질문(Question) 목록을 서비스로부터 받아뷰(HTML 화면)에 데이터를 전달하는 전체 흐름을 다룹니다.📌 예제 코드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;..

반응형