본문 바로가기

Spring

(43)
1. JDBC 이해 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 DB 1편 - 데이터 접근 핵심 원리 에 대해 공부하고, 정리한 내용입니다.1. JDBC 이해1️⃣ JDBC 등장 이유애플리케이션 개발의 데이터 활용대부분의 애플리케이션은 중요한 데이터를 데이터베이스(DB)에 저장합니다.클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션은 DB와 연결되어 동작합니다.2️⃣ 애플리케이션 서버와 DB의 연결 방식커넥션 연결애플리케이션 서버는 주로 TCP/IP 프로토콜을 사용하여 DB와 연결합니다.SQL 전달애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB로 전달합니다.결과 응답DB는 전달된 SQL을 수행하고, 그 결과를 애플리케이션 서버에 응답합니다.응..
어노테이션 정리 (1) 컨트롤러 레이어어노테이션설명예시 코드@WebMvcTest컨트롤러와 관련된 빈만 로드하여 웹 레이어 테스트를 수행. 주로 컨트롤러를 테스트할 때 사용하며, 서비스와 리포지토리는 주입되지 않음.@WebMvcTest(QueueController.class)@MockBean컨트롤러 테스트 시 서비스나 Facade 계층을 Mocking하여 의존성을 제거하고 원하는 동작을 설정 가능. 주로 @WebMvcTest와 함께 사용.@MockBean private QueueFacade queueFacade;@JsonTestJSON 직렬화 및 역직렬화 테스트를 수행. 컨트롤러의 JSON 변환이 정확한지 확인할 때 유용.@JsonTest@WithMockUser스프링 시큐리티를 사용하는 경우, 가상의 인증된 사용자를 설정..
06. 다양한 연관관계 매핑 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편에 대해 공부하고, 정리한 내용입니다.1. 연관관계 매핑 시 고려사항JPA를 사용하여 객체와 테이블 간의 연관관계를 매핑할 때는 몇 가지 중요한 사항을 고려해야 합니다. 이러한 고려사항은 올바른 설계와 최적의 성능을 보장합니다.1) 연관관계 매핑 시 고려해야 할 3가지다중성: 연관관계의 수(다대일, 일대다, 일대일, 다대다)를 의미합니다.단방향, 양방향: 객체 관계의 방향성을 정의합니다.연관관계의 주인: 외래 키(Foreign Key)를 관리하는 주체를 결정합니다.(1) 다중성다중성은 연관된 엔티티 간의 관계가 몇 대 몇인지를 정의합니다. JPA에서 지원하는 다중성 매핑 어노테이션은 다음과 같습니다:다..
05. 연관관계 매핑 기초 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편에 대해 공부하고, 정리한 내용입니다.1. 객체와 테이블 연관관계의 이해JPA에서 객체와 테이블의 연관관계를 어떻게 매핑하고 관리할 것인가는 매우 중요합니다. 이 글에서는 연관관계의 기본 개념과 매핑 방법을 설명하고, 실무에서 사용하는 올바른 패턴을 구체적으로 다룹니다.1) 목표객체와 테이블 연관관계의 차이를 이해합니다.객체의 참조와 테이블의 외래 키를 매핑하는 방법을 익힙니다.연관관계의 주요 용어를 이해합니다:방향(Direction): 단방향, 양방향다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)연관관계의 주인(Owner): 객체 양방향 연관관계..
04. 엔티티 매핑 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편에 대해 공부하고, 정리한 내용입니다.1. 엔티티 매핑JPA를 실무에 적용할 때 가장 중요한 부분 중 하나는 실제 객체와 RDB를 어떻게 매핑해서 사용하는지에 대한 이해입니다.1) 엔티티 매핑 소개객체와 테이블 매핑: @Entity, @Table필드와 컬럼 매핑: @Column기본 키 매핑: @Id연관관계 매핑: @ManyToOne, @JoinColumn(1) @Entity@Entity가 붙은 클래스는 JPA가 관리하는 엔티티입니다.JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수입니다.주의사항:기본 생성자가 필수입니다(파라미터가 없는 public 또는 protected 생성자).fina..
06. 주문 도메인 개발 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발에 대해 공부하고, 정리한 내용입니다.1. 주문 도메인 개발1) 구현 기능상품 주문주문 내역 조회주문 취소2) 구현 순서주문 엔티티, 주문상품 엔티티 개발주문 리포지토리 개발주문 서비스 개발주문 검색 기능 개발주문 기능 테스트3) 주문 엔티티, 주문상품 엔티티 개발(1) 주문 엔티티 코드package jpabook.jpashop.domain;import lombok.Getter;import lombok.Setter;import javax.persistence.*;import java.time.LocalDateTime;import java.util.ArrayList;import java.u..
05. 상품 도메인 개발 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발에 대해 공부하고, 정리한 내용입니다.1. 상품 도메인 개발1) 구현 기능상품 등록상품 목록 조회상품 수정2) 구현 순서상품 엔티티 개발 (비즈니스 로직 추가)상품 리포지토리 개발상품 서비스 개발상품 기능 테스트3) 상품 엔티티 개발 (비즈니스 로직 추가)(1) 상품 엔티티 코드package jpabook.jpashop.domain.item;import jpabook.jpashop.exception.NotEnoughStockException;import lombok.Getter;import lombok.Setter;import jpabook.jpashop.domain.Category;im..
04. 회원 도메인 개발 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발에 대해 공부하고, 정리한 내용입니다.1. 회원 도메인 개발1) 회원 리포지토리 개발(1) 회원 리포지토리 코드package jpabook.jpashop.repository;import jpabook.jpashop.domain.Member;import org.springframework.stereotype.Repository;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import java.util.List;@Repositorypublic class MemberRepository { ..