전체 글 295

STEP 02 - 로그인 & 로그아웃 구현하기

💡Spring Boot와 JPA를 사용하여 로그인 및 로그아웃 기능을 구현할 수 있다. 1. 로그인 쿼리 만들기먼저, UserRepository를 통해 사용자 이름과 비밀번호로 사용자를 조회하는 메서드를 만듭니다. 이 메서드는 JPQL을 사용하여 데이터베이스에서 사용자를 검색합니다.package com.tenco.blog_v1.user;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;@RequiredArgsConstructor@Repository // IoC..

카테고리 없음 2024.10.08

STEP 02 - 게시글 목록보기 (Post List View)

💡1. JPA에서의 게시글 목록을 조회하는 방법을 학습한다. 2. N+1 문제와 해결 방법 학습하기: 지연 로딩으로 인한 N+1 문제를 확인하고 해결 방법을 배운다. 3. 배치 사이즈(Batch Size) 설정 이해하기: default_batch_fetch_size를 설정하여 성능을 최적화하는 방법을 학습한다. 4. 게시글 목록보기 컨트롤러 및 뷰 구현하기: 실제로 게시글 목록을 표시하는 컨트롤러와 화면을 작성한다.  1. 게시글 목록보기 쿼리 작성 (Eager Fetching) 목표: EAGER 페치 전략을 사용하여 게시글 목록을 조회하고, 연관된 User 엔티티가 어떻게 로딩되는지 확인한다.package com.tenco.blog_v1.board;import jakarta.persistence.En..

카테고리 없음 2024.10.08

STEP 02 - 게시글 상세보기 (Post Details View)

💡1. Fetch 전략 이해하기: EAGER와 LAZY (Fetch) 전략의 차이점과 동작 방식을 이해한다. 2. Lazy Loading 동작 방식 이해하기: 지연 로딩이 어떻게 작동하고, 언제 데이터를 가져오는지 학습한다. 3. 직접 조인(Fetch Join) 사용하기: 필요한 경우 직접 조인을 사용하여 성능을 최적화하는 방법을 배운다.  1. 게시글 상세보기 구현 (Eager Fetching)목표: EAGER 페치 전략을 사용하여 게시글 상세보기 기능을 구현하고, 연관된 객체가 즉시 로딩되는 것을 확인합니다.package com.tenco.blog_v1.board;import com.tenco.blog_v1.user.User;import jakarta.persistence.*;import lombo..

카테고리 없음 2024.10.08

STEP 02 - 연관 관계 매핑: User와 Board 엔티티

💡1. JPA를 사용하여 User와 Board 엔티티 간의 연관 관계를 설정할 수 있다. 2. @ManyToOne과 @OneToMany 어노테이션의 사용법과 의미를 이해한다. 3. 지연 로딩(FetchType.LAZY)의 동작 방식을 이해한다. 4. @JoinColumn 어노테이션의 역할을 설명할 수 있다.  Board 엔티티 수정하기 - user 속성 추가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 lombo..

카테고리 없음 2024.10.08

STEP 02 - 사용자 관리 기본 코드 추가 및 설정

💡프로젝트 진행을 위한 기본 코드를 작성할 수 있다. HttpServletRequest 와 Model 를 구분해서 사용할 수 있다. UserControllerpackage com.tenco.blog_v1.user;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;@Slf4j@Controllerpublic class UserController { /** * 회원가입 페이지 요청 * 주소설계 : http://localhost:8080/join-form * * @param model * @return 문자열 ..

카테고리 없음 2024.10.08

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

카테고리 없음 2024.10.07

인텔리 다운 및 사용법 & spring initializr 사용하기

JetBrains: Essential tools for software developers and teamsJetBrains is a cutting-edge software vendor specializing in the creation of intelligent development tools, including IntelliJ IDEA – the leading Java IDE, and the Kotlin programming language.www.jetbrains.com➡️다운로드https://start.spring.io/➡️spring initializr버전 확인 후 사용하는 버전에 맞게 수정 해주면 되다 (21버전 쓰다가 17버전으로 바꿔서 변경해줌)*이 과정은 패스 해도 됨* spring in..

설치 메뉴얼 2024.10.07

mustache 기본 문법

mustache 기본 문법Mustache는 간단하고 직관적인 템플릿 엔진으로, HTML 등의 템플릿에서 데이터를 삽입하거나 간단한 로직을 표현할 수 있습니다  {{값}} 데이터 전달{{#값}} 조건문 혹은 반복문(컬렉션){{^값}} 부정{{>파일명}} 부분 템플릿   (헤더랑 푸터 가져올 때 사용){{#컬렉션}} -> 내부에 키 값이 없으면 출력할 때ㅡ {{.}} 으로 사용{{{ }}} 콧수염 태그 - 이스케이프 안됨 데이터 표시 (Interpolation): {{값}}설명: 템플릿에 데이터를 삽입할 때 사용합니다.만약 name에 "홍길동"이란 값이 전달되면, 결과는 안녕하세요, 홍길동님!가 됩니다. 섹션 (Sections): {{#값}}...{{/값}}설명: 조건문이나 반복문을 구현할 때 사용합니다...

카테고리 없음 2024.10.04

[JPA] Mustache 란 뭘까?

💡1. Mustache에 대해 설명할 수 있다. 2. Mustache 기본 문법을 확인해 보자. Mustache는 거의 로직이 없는 템플릿 엔진으로, 다양한 프로그래밍 언어에서 사용할 수 있으며, 간단하고 유지보수가 용이한 템플릿을 만드는 데에 유용합니다. Spring Boot와 Mustache를 결합함으로써 개발자는 백엔드 로직과 프론트엔드 표현을 분리하여 더 효율적이고 관리하기 쉬운 웹 어플리케이션을 구축할 수 있습니다.  Mustache의 주요 특징 로직을 최소화한 템플릿(Logic-less templates): Mustache 템플릿은 복잡한 로직을 최소화하여, 템플릿 내에서 간단한 조건문과 반복문을 지원합니다. 이는 데이터를 표시하는 데에 집중하도록 설계되었습니다.{{#users}}...{{..

카테고리 없음 2024.10.04