Spring boot 46

스프링 부트- 익명 블로그 만들기 버전2 (게시글 상세보기 - Persistence Context와 1차 캐시 활용)

기본키 조회는 find() 메서드가 최적기본키로 단건 조회할 때는 EntityManager의 find() 메서드를 사용하는 것이 가장 효율적입니다.find() vs JPQL 비교find(): 1차 캐시 활용, 기본키 최적화, 간단한 문법JPQL: 복잡한 조건이나 조인이 필요할 때 사용 선택 기준 정리조회 유형사용 방법이유기본키 단건 조회em.find()1차 캐시 최적화, 가장 빠름전체 목록 조회JPQLEntityManager 미지원, JPQL 필수조건부 조회JPQLEntityManager 미지원, JPQL 필수정렬된 조회JPQLORDER BY 필요, JPQL 필수페이징 조회JPQLsetFirstResult/setMaxResults 필요집계 쿼리JPQLCOUNT, SUM 등 필요복잡한 조인JPQL 또는 N..

Spring boot 2025.07.26

스프링 부트- 익명 블로그 만들기 버전2 (게시글 목록 보기 - Persistence Context와 JPQL 활용)

영속성 컨텍스트를 활용한 목록 조회V2에서는 Persistence Context의 장점을 활용하여 JPQL로 게시글 목록을 조회합니다.V1 vs V2 조회 방식 비교:V1: 네이티브 SQL 직접 작성 (SELECT * FROM board_tb...)V2: JPQL을 통한 객체지향적 조회 (SELECT b FROM Board b...) BoardPersistRepositorypackage com.tenco.blog.board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import lombok.RequiredArgsConstructor;import org.springframework.beans.factory.annota..

Spring boot 2025.07.25

EntityManager 핵심 메서드 요약

필수 암기 메서드 (CRUD)메서드용도사용법주의사항persist(entity)생성 - 새 엔티티 저장em.persist(board);@Transactional 필수find(Class, id)조회 - ID로 엔티티 찾기Board board = em.find(Board.class, 1L);없으면 null 반환merge(entity)수정 - 준영속 엔티티 병합Board merged = em.merge(board);모든 필드 덮어씀 주의remove(entity)삭제 - 엔티티 제거em.remove(board);영속 상태 엔티티만 가능 영속성 컨텍스트 관리 메서드메서드용도언제 사용?예시flush()즉시 DB 반영ID가 급히 필요할 때em.flush();clear()영속성 컨텍스트 초기화메모리 정리 (대용량 처리..

Spring boot 2025.07.25

스프링 부트- 익명 블로그 만들기 버전2 (게시글 작성 -PersistenceContext 활용)

Persistence Context란?영속성 컨텍스트(Persistence Context)**는 JPA의 핵심 개념으로, 엔티티를 영구 저장하는 환경입니다.EntityManager를 통해 관리되며, 애플리케이션과 데이터베이스 사이에서 엔티티의 생명주기를 관리합니다.영속성 컨텍스트는 JPA를 선택하는 가장 중요한 이유 중 하나입니다. // 엔티티의 4가지 상태public void entityLifecycleExample() { // 1. 비영속 (Transient): 새로 생성된 객체, 영속성 컨텍스트와 무관 Board board = new Board("제목", "내용", "작성자"); // 2. 영속 (Managed): 영속성 컨텍스트에서 관리되는 상태 em.persist(b..

Spring boot 2025.07.25

스프링 부트- 익명 블로그 만들기 버전2 (패키지 구조 변경하기)

기존 패키지 구조 형태V1: 계층 중심 패키지 구조 com.tenco.blog├── controller/ # 계층별 분리│ ├── BoardController│ └── UserController├── model/ # 모든 엔티티가 한 곳에│ ├── Board│ └── User ├── service/ # 모든 서비스 클래스가 한 곳에│ ├── BoardService├── repository/ # 모든 리포지토리가 한 곳에│ ├── BoardNativeRepository│ └── UserRepository├── dto/ # 모든 DT..

Spring boot 2025.07.24

스프링 부트 핵심 콘셉트

1. 제어의 역전(IoC)과 의존성 주입(DI)2. 빈(Bean)과 스프링 컨테이너3. 관점 지향 프로그래밍(AOP)4. 이식 가능한 서비스 추상화(PSA)5. Application Context, context 1. 스프링 프레임워크(Spring Framework)일반적인 정의: 스프링 프레임워크는 자바 플랫폼을 위한 강력한 애플리케이션 프레임워크입니다. 객체 지향 프로그래밍의 원칙에 기반하여 애플리케이션을 구성하고 관리하는 방식으로, 주로 엔터프라이즈급 애플리케이션을 구축할 때 사용됩니다.설정 방식: 스프링은 초기 설정이 복잡할 수 있습니다. XML 설정 파일이나 자바 기반의 설정 클래스를 통해 다양한 기능을 직접 구성해야 합니다.기능: 스프링은 의존성 주입(DI), AOP(관점 지향 프로그래밍), ..

Spring boot 2025.07.24

스프링 부트- 익명 블로그 만들기 네이티브쿼리활용 버전1(게시글 삭제하기)

BoardNativeRepository 코드 추가package com.tenco.blog.repository;import com.tenco.blog.model.Board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Repository // IoC 대상public class BoardNativeRepository { // JPA의 핵심 인터페이스 // 데이터베이스와의 모..

Spring boot 2025.07.24

스프링 부트- 익명 블로그 만들기 네이티브쿼리활용 버전1(게시글 상세보기)

BoardNativeRepository 코드 추가package com.tenco.blog.repository;import com.tenco.blog.model.Board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Repository // IoC 대상public class BoardNativeRepository { // JPA의 핵심 인터페이스 // 데이터베이스와의 모..

Spring boot 2025.07.23

스프링 부트- 익명 블로그 만들기 네이티브쿼리활용 버전1(게시글 목록보기)

BoardNativeRepositorypackage com.tenco.blog.repository;import com.tenco.blog.model.Board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Repository // IoC 대상public class BoardNativeRepository { // JPA의 핵심 인터페이스 // 데이터베이스와의 모든 작업을 ..

Spring boot 2025.07.23