분류 전체보기
-
[JPA] Spring Data JPA의 핵심 개념Data 2026. 1. 24. 21:16
이전 글에서 보았듯 Spring Data JPA의 핵심은 Repository를 상속받아서 application.yml이나 application.properties 등의 설정과 Entity, Entity의 ID 타입을 바탕으로 데이터베이스와 상호작용 하는 것입니다. Repository는 이러한 상호작용에 있어서 가장 핵심 요소입니다. 이번 글에서는 Repository를 바탕으로 Spring Data JPA의 핵심 개념을 알아보겠습니다.https://msj9965.tistory.com/64 [JPA] 기본적인 Spring Data Jpa 활용이번 글에서는 Spring Data JPA를 활용하는 기본적인 방법을 코드를 통해서 알아보겠습니다. Entity, Repository, 데이터 삽입 부분을 직접 작성하고..
-
[JPA] 기본적인 Spring Data Jpa 활용Data 2026. 1. 24. 19:06
이번 글에서는 Spring Data JPA를 활용하는 기본적인 방법을 코드를 통해서 알아보겠습니다. Entity, Repository, 데이터 삽입 부분을 직접 작성하고 각 코드의 특성을 기술합니다.Person.javapackage jpabasic.jpaexample.Entity;import jakarta.persistence.*;import lombok.AccessLevel;import lombok.Getter;import lombok.NoArgsConstructor;@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getterpublic class Person { @Id @GeneratedValue(strategy = Generation..
-
[Data] JPA - 나오게 된 배경, 사용 이유Data 2026. 1. 3. 20:24
이번 포스팅에서는 Java의 표준 ORM 기술인 JPA에 대해서 살펴보겠습니다. 1. SQL 중심 개발의 문제점과 패러다임의 불일치과거 자바 애플리케이션 개발의 핵심은 'SQL 매핑' 이었습니다. 비즈니스 요구사항을 분석하고 객체 지향적으로 설계를 하더라도, 결국 데이터를 영구 저장하기 위해 데이터베이스(RDB)에 맞춘 SQL을 작성해야 했기 때문입니다.이 과정에서 우리는 크게 두 가지 문제에 직면합니다.1) 무한 반복되는 CRUD와 SQL 의존성Member라는 객체에 tel 필드를 하나 추가한다고 가정해 봅시다.Member 클래스 필드 추가INSERT 쿼리에 컬럼 추가SELECT 쿼리에 컬럼 추가UPDATE 쿼리에 컬럼 추가ResultSet 매핑 코드 수정단순한 필드 하나 추가인데도 관련된 모든 코드를..
-
[Spring] AOP 알아보기 - Spring AOP 프록시 매커니즘Spring 2025. 12. 27. 20:16
Spring AOP는 순수 자바 기반의 프록시(Proxy) 기술을 사용하여 동작합니다. 이 문서는 Spring이 프록시를 생성하는 두 가지 전략(JDK Dynamic Proxy, CGLIB)과 프록시 방식이 갖는 구조적 한계인 '내부 호출(Self-Invocation)' 문제 및 해결책을 다룹니다.1. 프록시 생성 전략 (Proxying Mechanisms)Spring AOP는 타겟 객체의 상태(인터페이스 구현 여부)에 따라 다음 두 가지 방식 중 하나를 자동으로 선택하여 프록시 객체를 생성합니다.① JDK 동적 프록시 (JDK Dynamic Proxy)지위: Spring AOP의 기본(Default) 전략입니다.기술: 표준 JDK의 java.lang.reflect.Proxy를 사용합니다.조건: 타겟 객..
-
[Spring] AOP 알아보기 - Spring AOP의 특징Spring 2025. 12. 27. 16:19
1. Spring AOP의 기술적 특징"순수 자바로 구현되었으며, 특별한 설정이 필요 없습니다."Pure Java: Spring AOP는 순수 자바로 구현되어 있습니다.핵심 원리 (프록시 패턴): Spring AOP의 핵심은 "동적 프록시(Dynamic Proxy)"입니다.Spring은 내부적으로 자바 표준 라이브러인 java.lang.reflect.Proxy (인터페이스 기반)나, 오픈소스 라이브러리인 CGLIB (클래스 상속 기반)를 사용하여 런타임에 가짜 객체(Proxy)를 만들어냅니다.이 모든 과정이 표준 Java 언어 스펙 안에서 이루어지기 때문에, Java가 돌아가는 어떤 환경에서든 똑같이 동작합니다.Spring AOP는 C++ 같은 네이티브 코드를 쓰거나, 복잡한 외부 JVM 에이전트를 강제..
-
[Spring] AOP 알아보기 - AOP 개념Spring 2025. 12. 27. 15:55
1. 핵심 AOP 용어 정리1) Aspect (관점)정의: 여러 클래스에 걸쳐있는 관심사(Concern)의 모듈화입니다.예시: 트랜잭션 관리가 대표적입니다.구현: 일반 클래스(스키마 기반) 또는 @Aspect 어노테이션이 붙은 클래스(@AspectJ 스타일)로 구현합니다.2) Join point (조인 포인트)정의: 프로그램 실행 중의 특정한 지점입니다. (예: 메서드 호출 시점, 예외 발생 시점 등)Spring에서의 특징: 매Spring AOP에서 조인 포인트는 항상 "메서드 실행(Method Execution)" 시점만을 의미합니다. (필드 값 변경 등은 지원하지 않음)3) Advice (어드바이스)정의: 특정 조인 포인트에서 Aspect가 취하는 실제 "행동(Action)"입니다.동작: "Inter..
-
[Spring] AOP 알아보기 - AOP 소개Spring 2025. 12. 27. 15:41
관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)은 애플리케이션 전반에 공통적으로 적용되어야 하지만, 핵심 비즈니스 로직과는 분리되어야 하는 기능(트랜잭션, 로깅, 보안 등)을 하나의 관점(Aspect)으로 모듈화하고, 이를 선언적으로 여러 지점에 적용할 수 있도록 지원하는 프로그래밍 패러다임입니다. AOP는 코드의 중복을 줄이고 관심사의 분리를 강화함으로써, 비즈니스 로직을 보다 명확하고 순수하게 유지하는 것을 목표로 합니다.1. AOP와 OOP의 관계관점 지향 프로그래밍(AOP)은 객체 지향 프로그래밍(OOP)을 대체하는 것이 아니라, 보완하여 프로그램 구조를 바라보는 또 다른 방식을 제공합니다.OOP의 핵심 단위: 클래스(Class)AOP의 핵심 단위: 관점(Aspe..
-
[Spring] 서비스(Service) 레이어의 본질적인 역할과 책임Spring 2025. 12. 20. 19:57
백엔드 개발자에게 @Service 어노테이션은 굉장히 많이 사용하는 것 중 하나입니다. 하지만 "서비스의 역할이 정확히 무엇인가?"라는 질문에 명확하게 답하기란 의외로 쉽지 않습니다. 단순히 컨트롤러와 리포지토리 사이를 연결하는 접착제일까요? 아니면 비즈니스 로직 전체를 의미할까요?도메인 주도 설계(DDD) 관점에서 바라본 서비스(Application Service)의 역할은 명확합니다. 그것은 바로 '도메인 모델의 협력자'입니다. 구체적으로는 다음 세 가지 흐름을 제어하는 것이 서비스의 핵심 책임입니다.Load: 리포지토리를 통해 도메인 객체를 로드합니다.Delegate: 도메인 객체나 도메인 서비스에 실제 비즈니스 행위를 위임합니다.Save: 로직 수행 후 변경된 상태를 영구 저장소에 반영합니다.이번..