분류 전체보기60 자바 enum 📝 자바 Enum 상세 설명 및 활용 예제enum은 자바에서 열거형 데이터 타입으로, 서로 관련 있는 상수들의 집합을 표현하는 데 사용됩니다. 타입 안전성을 보장하며, 추가 필드와 메서드를 가질 수 있어 매우 유용합니다.1. 기본 구조public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;} 2. 특징타입 안전성 보장: 특정 enum 값만 사용할 수 있도록 제한.가독성 향상: 코드의 의미를 명확하게 전달.Switch 문에서 사용 가능: 가독성과 유지 보수성을 높임.메서드와 필드 정의 가능: 추가적인 데이터와 동작을 포함 가능.Singleton 패턴 유사성: enum 값은 JVM에서 하나의 인스턴스로만 존.. Java 2024. 12. 9. 자바 리플렉션 📝 Java ReflectionJava Reflection은 런타임(Run-time)에 클래스, 메서드, 필드 등의 정보를 동적으로 탐색하고 조작할 수 있는 기능을 제공하는 Java API입니다. 즉, 코드 실행 중에 클래스의 구조를 검사하거나 조작할 수 있습니다.리플렉션은 java.lang.reflect 패키지와 java.lang.Class 클래스를 통해 제공됩니다.1. 리플렉션의 주요 기능클래스 정보 조회: 클래스 이름, 패키지 이름, 부모 클래스, 구현 인터페이스 등의 정보를 확인할 수 있습니다.필드(Field) 조회 및 수정: 클래스의 멤버 변수를 동적으로 읽고 수정할 수 있습니다.메서드(Method) 호출: 클래스의 메서드를 동적으로 호출할 수 있습니다.생성자(Constructor) 호출: 클.. Java 2024. 12. 7. JPA EntityManagerFactory, EntityManager는 사용 후 꼭 닫아야 한다 📝 JPA 리소스 누수란 무엇인가?프로그래밍에서 "누수"란, 사용된 리소스가 적절히 해제되지 않고 계속 점유되는 상태를 의미합니다. 이는 메모리, 파일 핸들, 데이터베이스 연결 등의 리소스가 반환되지 않아 시스템 성능에 영향을 미칠 수 있습니다.1. JPA에서의 리소스 누수란?EntityManager와 EntityManagerFactory의 역할EntityManager:데이터베이스와의 세션 역할을 수행하며, 영속성 컨텍스트(Persistence Context)를 관리.애플리케이션에서 데이터베이스 작업을 수행할 때마다 생성 및 종료해야 함.EntityManagerFactory:EntityManager를 생성하는 데 사용되는 고비용 객체.데이터베이스 연결 풀과 같은 리소스를 관리하므로 애플리케이션 종료 시.. JPA 2024. 12. 5. JPA 구동방식 📝 JPA 구동 방식JPA의 구동 방식은 Persistence → EntityManagerFactory → EntityManager의 계층적 구조를 따릅니다. 주요 클래스와 구동 방식을 단계별로 설명합니다.1. JPA의 주요 클래스 및 역할Persistence:JPA 표준에서 제공하는 유틸리티 클래스.META-INF/persistence.xml 파일을 읽어 EntityManagerFactory를 생성하는 역할.EntityManagerFactory:EntityManager를 생성하기 위한 팩토리 클래스.데이터베이스와의 연결 정보를 포함하며 애플리케이션 전반에서 공유 가능.EntityManager:데이터베이스와의 실제 상호작용(삽입, 조회, 수정, 삭제 등)을 처리.영속성 컨텍스트(Persistence C.. JPA 2024. 12. 5. 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. 이전 1 2 3 4 5 다음