분류 전체보기 230

블로그 - 게시글 삭제

BoardRepository에서 게시글 삭제 쿼리를 만들어 보자. - JPA API, JPQL 객체 지향 쿼리 작성(삭제 권한)package com.tenco.blog_v1.board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@RequiredA..

Spring boot 2024.10.23

블로그 - 게시글 쓰기

JPA를 활용하여 게시글 작성기능을 구현하는 방법을 학습한다. 이 과정에서는 데이터 저장, DTO 사용, 컨트롤러 구현등을 다루며, ORM의 영속성 관리에 대한 이해를 심화한다. BoardRepository save 메서드 구현목표 : Board 엔티티를 데이터베이스에 저장하는 save 메서드를 구현한다. BoardRepository 코드 추가 @Transactional public Board save(Board board) { em.persist(board); // 비영속 상태인 엔티티를 영속 상태로 전환시킨다. return board; } BoardDTOpackage com.tenco.blog_v1.board;import com.tenco.blog_v1.user.U..

Spring boot 2024.10.23

블로그 - 로그인&로그아웃 구현

Spring Boot와 JPA를 사용하여 로그인 및 로그아웃 기능을 구현할 수 있다. 로그인 쿼리 만들기먼저, 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@Repositorypublic class U..

Spring boot 2024.10.23

블로그 - 게시글 목록보기 (Post List View)

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

Spring boot 2024.10.23

블로그5 - 게시글 상세보기 (Post Details View)

학습 목표Fetch 전략 이해 : EAGER와 LAZY(Fetch) 전략의 차이점과 동작 방식 이해Lazy Loading 동작 방식 이해 : 지연 로딩이 어떻게 작동하고, 언제 데이터를 가져오는지 학습직접 조인(Fetch Join) 사용 : 필요한 경우 직접 조인을 사용하여 성능을 최적화하는 방법 학습  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..

Spring boot 2024.10.23

블로그4 - 연관 관계 매핑: User와 Board 엔티티

학습 목표JPA를 사용하여 User와 Board 엔티티 간 연관 관계 설정할 수 있다.@ManyToOne과 @OneToMany 어노테이션의 사용법과 의미를 이해한다.지연 로딩(FetchType.LAZY)의 동작 방식을 이해한다.@JoinColumn 어노테이션의 역할을 설명할 수 있다.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.T..

Spring boot 2024.10.14

블로그3 - 사용자 관리 기본 코드 추가 및 설정

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 문자열 * 반환되는 문자열을 뷰 리졸버가 처리하며, * mustache 템플릿 엔진을 통해서 뷰 파일을 렌더링 한다. */ ..

Spring boot 2024.10.08

블로그2 - 익명 게시판 만들기

엔티티 클래스 만들기 (Board.java)package com.tenco.blog_v1.board;import jakarta.persistence.*;import lombok.Data;import java.sql.Timestamp;@Entity@Table(name = "board_tb")@Datapublic class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본 키 전략 db 위임 private Integer id; private String title; private String content; // created_at 컬럼과 매핑하며, 이 필드는 데이터 저장 시 자동으로 설정 됨 @..

Spring boot 2024.10.08

Mustache

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

Spring boot 2024.10.04