전체 글44 hibernate entitymanager 의존성 📝 Hibernate EntityManager란?Hibernate EntityManager는 Hibernate 프레임워크에서 JPA(Java Persistence API)의 핵심 클래스인 EntityManager를 구현하는 라이브러리입니다. 이를 통해 Hibernate는 JPA 표준을 따르는 ORM(Object-Relational Mapping) 도구로 사용할 수 있습니다.1. EntityManager란?EntityManager는 JPA(Java Persistence API)에서 제공하는 주요 인터페이스로, 데이터베이스 작업(삽입, 조회, 수정, 삭제)을 수행하는 역할을 합니다.주요 기능:엔티티의 영속성 관리: 엔티티 객체를 데이터베이스에 저장하거나 삭제. 엔티티 객체와 데이터베이스 간의 상태 동기화... JPA 2024. 12. 5. JDBC Driver은 Java Application과 DB의 중간다리 역할을 한다. 📝 JDBC 드라이버란 무엇인가?JDBC 드라이버는 Java 애플리케이션이 데이터베이스와 상호작용할 수 있도록 돕는 중간 다리 역할을 합니다.1. JDBC란 무엇인가?JDBC(Java Database Connectivity)는 Java에서 데이터베이스와 상호작용하기 위한 표준 API입니다. Java 애플리케이션은 JDBC API를 사용하여 데이터베이스에 명령(SQL)을 보내고, 결과를 처리할 수 있습니다.하지만 JDBC API는 표준 인터페이스이기 때문에, 실제로 데이터베이스와 통신하려면 각 데이터베이스에 맞는 구체적인 구현(드라이버)이 필요합니다. 이를 JDBC 드라이버가 담당합니다.2. JDBC 드라이버의 역할JDBC 드라이버는 Java 애플리케이션과 특정 데이터베이스 간의 통신을 가능하게 하는 구.. DB & SQL 2024. 12. 5. HandlerMapping & RequestMapping 📝 HandlerMapping & RequestMapping1. HandlerMappingHandlerMapping은 Spring MVC의 요청 처리 흐름에서 요청 URL을 적절한 컨트롤러(Handler)로 매핑하는 역할을 담당합니다.HandlerMapping의 역할클라이언트로부터 들어온 HTTP 요청 URL을 기반으로 어떤 컨트롤러 메서드를 호출할지 결정.Spring MVC가 제공하는 다양한 HandlerMapping 구현체 중 하나를 사용하여 URL과 컨트롤러를 연결.HandlerMapping의 구현체RequestMappingHandlerMapping: 애노테이션 기반의 매핑을 처리.SimpleUrlHandlerMapping: XML 또는 Java 설정 파일을 통해 매핑 정의.BeanNameUrlH.. spring 2024. 12. 2. SpringMVC ArgumentResolver 📝 Spring MVC의 ArgumentResolver란?ArgumentResolver는 Spring MVC에서 컨트롤러의 메서드 파라미터를 해석하고 바인딩하는 데 사용되는 인터페이스입니다. Spring MVC의 요청 처리 흐름에서 HandlerMethodArgumentResolver 인터페이스를 구현하여 특정한 타입의 메서드 파라미터를 처리할 수 있습니다.ArgumentResolver란?역할:HTTP 요청의 데이터 (예: 쿼리 파라미터, URL 경로 변수, 헤더, 요청 본문 등)를 컨트롤러 메서드의 파라미터로 변환.컨트롤러의 메서드 파라미터에 대한 맞춤형 로직 적용.주요 인터페이스:HandlerMethodArgumentResolver 인터페이스:supportsParameter(MethodParamet.. spring 2024. 12. 2. em.persist vs em.merge package jpabook.jpashop.repository;import jakarta.persistence.EntityManager;import jpabook.jpashop.domain.item.Item;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import java.util.List;@Repository@RequiredArgsConstructorpublic class ItemRepository { private final EntityManager em; public void save(Item item) { if (item.getId() == null) { em.persi.. JPA 2024. 11. 30. Entity 클래스와 DTO를 분리하는 이유 ❓ ChatGPT에 질문package jpabook.jpashop.controller;import jakarta.validation.Valid;import jpabook.jpashop.domain.Address;import jpabook.jpashop.domain.Member;import jpabook.jpashop.service.MemberService;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.Bind.. spring 2024. 11. 30. @RequestBody @Valid Object obj, BindingResult br 타입에러가 br에 담기지 않는 이유 @RequestBody와 @Valid의 동작 방식동작 원리 설명@RequestBody @Valid ItemSaveForm form, BindingResult br의 경우:@RequestBody는 클라이언트 요청의 HTTP 본문을 Java 객체로 변환합니다. 이 과정은 HttpMessageConverter가 담당합니다.변환 중에 JSON → Java 객체로 매핑 시 타입 에러가 발생하면, Spring은 컨트롤러 메서드에 접근하지 않고 예외(HttpMessageNotReadableException 등)를 던집니다.따라서, BindingResult에 에러가 바인딩되지 않고, 컨트롤러 메서드 실행 전에 예외가 발생하여 정상 동작하지 않습니다.@Valid ItemSaveForm form, BindingResult.. spring 2024. 11. 30. 도메인 모델 패턴 vs 트랜잭션 스크립트 패턴 🔥 도메인 모델 패턴이란?도메인 모델 패턴(Domain Model Pattern)은 애플리케이션의 비즈니스 로직을 도메인 객체(엔티티) 내부에 포함시키는 설계 패턴입니다. 즉, 비즈니스 규칙, 데이터 변경, 데이터 검증 등을 도메인 객체가 직접 수행하도록 설계합니다.이 패턴은 DDD(Domain-Driven Design)의 핵심 개념 중 하나이며, 객체지향의 장점을 최대한 활용합니다.특징도메인 객체에 책임 부여:객체가 자신의 상태를 관리하고, 관련된 비즈니스 로직을 수행합니다.예: Order 객체가 주문 생성, 주문 취소 등을 수행.비즈니스 로직의 캡슐화:데이터와 이를 처리하는 로직이 한 객체 내부에 캡슐화됩니다.엔티티 중심 설계:엔티티 객체가 단순히 데이터를 저장하는 역할만 하지 않고, 비즈니스 로직.. spring 2024. 11. 25. 도메인 주도설계와 OOP의 관계에 대한 chatGPT와의 질의응답 ❓ 질의JPA 를 통한 개발을 진행하고 있는데 Member 클래스는 MemberRepository랑 MemberService를 이용해서 로직을 만들었다. (join, findById, findAll) 같은 것들을 근데 Item 클래스는 비즈니스 로직이 Item클래스 내부에 있는거 같아 public void addQuantity(int quantity) {this.stockQuantity += quantity} 이렇게 하는게 도메인 주도 설계라는데 왜 이렇게 하는거지? 객체지향하고도 관계가 있나? 도메인 주도 설계와 객체지향 설계1. 왜 비즈니스 로직을 도메인 객체(Item) 내부에 두는가?핵심 이유: 응집성(Cohesion)을 높이고 도메인 객체의 역할을 강화하기 위해객체는 데이터(stockQuan.. JPA 2024. 11. 24. JPA FetchType.EAGER의 N+1 문제 & cascadeType.ALL 사용 이유 & 연관관계 편의 메서드 @ManyToOne(fetch = FetchType.EAGER)와 N+1 문제문제 설명@ManyToOne(fetch = FetchType.EAGER) 설정은 N+1 문제를 유발할 가능성이 높습니다. 예를 들어, 아래와 같은 상황을 가정해보겠습니다.코드 예시@Entitypublic class Order { @Id private Long id; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "member_id") private Member member;} @Entitypublic class Member { @Id private Long id; private String name;} JPQL 예시List .. JPA 2024. 11. 24. 자바 접근제어자 개념과 JPA @Embeddable에서 기본생성자에 proteced를 사용하는 이유 자바 접근 제어자자바에서 접근 제어자(Access Modifier)는 클래스, 메서드, 변수 등의 접근 범위를 결정하여 객체 지향 프로그래밍의 캡슐화(encapsulation)를 구현하는 데 사용됩니다. 자바는 네 가지 접근 제어자를 제공합니다: public, private, protected, 그리고 default(접근 제어자를 명시하지 않을 때).1. public설명: 모든 클래스에서 접근 가능합니다. 패키지 내부 또는 외부 어디서든 해당 멤버에 접근할 수 있습니다.접근 범위:같은 클래스: O같은 패키지: O하위 클래스(다른 패키지): O전체 외부 클래스: O예시:public class MyClass { public int myVariable; public void myMethod() { .. spring 2024. 11. 24. JPA기초 @Entity & @Id & @GeneratedValue & 영속성 컨텍스트 🔥 JPA란 무엇인가? 그리고 @Entity, @Id, @GeneratedValue의 역할JPA란?JPA(Java Persistence API)는 자바 애플리케이션에서 객체(클래스)와 관계형 데이터베이스 간의 매핑을 정의하고 관리하기 위한 표준 인터페이스입니다.역할:객체와 테이블 간의 매핑을 자동으로 처리 (ORM: Object-Relational Mapping).SQL 없이도 데이터베이스와 상호작용 가능.데이터베이스 독립적인 애플리케이션 개발 지원.구현체: Hibernate, EclipseLink, OpenJPA 등이 있으며, JPA는 이 구현체들을 위한 표준입니다.@Entity역할: 클래스가 JPA 엔터티임을 선언합니다. 데이터베이스 테이블과 매핑됩니다.@Entitypublic class User .. spring 2024. 11. 23. 이전 1 2 3 4 다음