Spring boot/Blog 프로젝트 만들기(JPA) (36) 썸네일형 리스트형 완성 코드 STEP 02 - 로그인 & 로그아웃 구현하기 ( JPA API , JPQL 쿼리 사용, 인증(세션 로직 추가 ) 1. 로그인 쿼리 만들기먼저, UserRepository를 통해 사용자 이름과 비밀번호로 사용자를 조회하는 메서드를 만든다. 이 메서드는 JPQL을 사용하여 데이터베이스에서 사용자를 검색한다. UserRepositorypackage com.tenco.blog_v1.user;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;@RequiredArgsConstructor@Repository // IoCpublic class UserRepository { priv.. 완성 코드 STEP 02 - 게시글 목록보기 (Post List View) ( JPA API , JPQL 쿼리 사용, 인증(세션 로직 추가 ) 1. 게시글 목록보기 쿼리 작성 (Eager Fetching)목표: EAGER 페치 전략을 사용하여 게시글 목록을 조회하고, 연관된 User 엔티티가 어떻게 로딩되는지 확인한다.package com.tenco.blog_v1.board;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import java.util.List;@RequiredArgsConstructor@Repository // IoCpublic class BoardRepository { pr.. 완성 코드 STEP 02 - 게시글 상세보기 (Post Details View) ( JPA API , JPQL 쿼리 사용, 인증(세션 로직 추가 ) 1. 게시글 상세보기 구현 (Eager Fetching)목표EAGER 페치 전략을 사용하여 게시글 상세보기 기능을 구현하고, 연관된 객체가 즉시 로딩되는 것을 확인한다.package com.tenco.blog_v1.board;import com.tenco.blog_v1.user.User;import jakarta.persistence.*;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.sql.Timestamp;@NoArgsConstructor@Entity@Table(name = "board_tb")@Datapublic class Board { @Id @GeneratedValue(strateg.. 완성 코드 STEP 02 - 연관 관계 매핑: User와 Board 엔티티 ( JPA API , JPQL 쿼리 사용, 인증(세션 로직 추가 ) Board 엔티티에 User와의 연관 관계를 설정수정된 Board 엔티티 코드package com.tenco.blog_v1.board;import com.tenco.blog_v1.user.User;import jakarta.persistence.*;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.sql.Timestamp;@NoArgsConstructor@Entity@Table(name = "board_tb")@Datapublic class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본키 전략 db 위임 pri.. 완성 코드 STEP 02 - 사용자 관리 기본 코드 추가 및 설정( JPA API , JPQL 쿼리 사용, 인증(세션 로직 추가 ) Spring에서 템플릿 엔진을 사용할 때 데이터를 뷰로 전달하는 방식HttpServletRequest 객체 사용HttpServletRequest는 기본 서블릿 개념에서 사용된다.모든 HTTP 요청에 대한 데이터를 관리할 수 있으며, 세션이나 쿠키 같은 정보도 함께 처리할 수 있다.서블릿 API와 연관되어 있어 구조가 약간 복잡할 수 있다.Model 객체 사용Model은 Spring MVC에서 데이터 전달 전용으로 만들어졌다.컨트롤러에서 뷰로 데이터를 간편하게 전달할 수 있다.코드가 간결하며, Spring 프레임워크와 깊이 연관되어 있어 유지보수나 코드 가독성핵심 정리Model: 간단하고 Spring MVC에서 자주 사용되는 방식입니다. 일반적인 데이터 전달에 적합하다.HttpServletRequest: .. 완성 코드 STEP 01 - 익명 게시판 만들기 application.ymlspring: profiles: active: - dev #활성화할 프로필 설정 application-dev.ymlserver: servlet: encoding: charset: utf-8 force: true port: 8080spring: mustache: servlet: expose-session-attributes: true # Mustache 템플릿에서 세션 속성에 접근할 수 있도록 허용 expose-request-attributes: true # Mustache 템플릿에서 요청 속성에 접근할 수 있도록 허용 datasource: driver-class-name: org.h2.Driver.. 완성 코드 STEP 01 - 프로젝트 생성 의존성 확인plugins { id 'java' id 'org.springframework.boot' version '3.2.10' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.tenco'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral()}dependencies { implementation 'org.springframework.boot:spring-b.. Mustache 란 뭘까? Mustache 란?Mustache는 거의 로직이 없는 템플릿 엔진으로, 다양한 프로그래밍 언어에서 사용할 수 있으며, 간단하고 유지보수가 용이한 템플릿을 만드는 데에 유용하다. Spring Boot와 Mustache를 결합함으로써 개발자는 백엔드 로직과 프론트엔드 표현을 분리하여 더 효율적이고 관리하기 쉬운 웹 어플리케이션을 구축할 수 있다. Mustache의 주요 특징 로직을 최소화한 템플릿(Logic-less templates)Mustache 템플릿은 복잡한 로직을 최소화하여, 템플릿 내에서 간단한 조건문과 반복문을 지원한다. 이는 데이터를 표시하는 데에 집중하도록 설계되었다.{{#users}} {{name}} 님이 로그인했습니다.{{/users}}{{^users}} 로그인한 사용자가 없습니다.. 이전 1 2 3 4 5 다음