Spring JPA - 엔티티를 DTO로 바꿔서 사용하는 이유
·
Spring/JPA
이번 포스트에서는 SpringBoot 프로젝트에서 왜 Entity를 DTO로 변환시켜서 사용하는지 알아보자 1. 엔티티와 DTO 엔티티(Entity): 엔티티는 데이터베이스의 테이블과 직접 매핑되는 객체로, 비즈니스 로직을 포함할 수 있다. 엔티티는 데이터베이스와의 상호작용을 위해 설계되며, 변경이 발생하면 데이터베이스 스키마에도 영향을 미칠 수 있다. DTO(Data Transfer Object): DTO는 계층간 데이터 교환을 위한 객체로, 로직을 포함하지 않고 순수한 데이터만을 가지고 있다. DTO는 특정 엔티티의 일부 데이터나 여러 엔티티의 조합된 데이터를 전달하는 데 사용될 수 있으며, 클라이언트와 서버 간의 통신에 최적화된 구조를 가진다. 2. 엔티티를 직접 사용하는 문제점 데이터 노출 문제 ..
Spring JPA - 연관관계 매핑
·
Spring/JPA
저번 포스트에서 Entity에 대해서 알아봤으니 이번엔 연관관계에 대한 매핑을 알아보자 1. 엔티티의 연관관계 매핑이란? 엔티티의 연관관계 매핑은 객체 간의 관계를 데이터베이스 테이블에 매핑하는 작업을 의미한다. 이를 통해 객체지향적인 프로그래밍 모델을 유지하면서 데이터베이스와의 관계를 표현할 수 있다. JPA에서는 다양한 연관관계 매핑 어노테이션을 제공하여 이를 구현할 수 있다. 연관관계 매핑에는 다음과 같은 어노테이션들이 사용된다. @OneToOne: 일대일 관계를 매핑한다. 양방향 매핑이 가능하며, 대상 엔티티와 매핑할 때는 @JoinColumn 어노테이션을 사용한다. @OneToMany: 일대다 관계를 매핑한다. 단방향 매핑 또는 양방향 매핑으로 설정할 수 있다. 대상 엔티티에는 @ManyToOn..
Spring JPA - Entity
·
Spring/JPA
이번 포스트에서는 엔티티에 대해서 알아보자 1. 엔티티(Entity) 엔티티는 JPA가 데이터베이스와 상호작용하는데 필요한 주요 객체이다. 엔티티는 실제로 데이터베이스 테이블의 하나의 레코드를 나타내는 자바 객체이다. 이 엔티티는 데이터베이스에서 정보를 읽고, 변경하고, 생성하고, 삭제하는 모든 작업에 사용된다. 2. 엔티티를 만들기 위한 규칙 클래스 상단에 @Entity 어노테이션 적기 엔티티 클래스는 @Entity라는 어노테이션을 클래스에 표시해야 한다. 이것이 없으면 JPA는 이것을 엔티티로 인식하지 못한다. 기본 키: 반드시 기본 키(@Id 어노테이션이 붙은 필드)를 가지고 있어야 한다. 기본 키는 데이터베이스 테이블에서 각 레코드를 고유하게 식별하는 데(pk로) 사용된다. 기본 생성자: JPA ..
Spring JPA 영속성 컨텍스트(EntityManager)
·
Spring/JPA
이번 포스트에서는 Spring Data JPA의 영속성에 대해서 알아보자 1. 영속성이란? JPA의 영속성(Persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 여기서 말하는 데이터는 주로 데이터베이스에 저장되는 데이터를 말한다. JPA에서는 이 영속성을 다루기 위해 여러 개념과 기능을 제공하는데, 그 중에서 가장 중요한 것이 '엔티티의 생명주기'와 '영속성 컨텍스트'이다. 2. 엔티티의 생명주기 JPA에서 엔티티는 특정한 생명주기를 가지며, 이 생명주기는 엔티티의 상태에 따라 변화한다. 엔티티의 상태는 크게 '비영속 (new/transient)', '영속 (managed)', '준영속 (detached)', '삭제 (removed)'의 4가지 ..
스프링에서의 데이터베이스 접근 방법: DAO, Mapper, 그리고 @Mapper 어노테이션 사용법
·
Spring/Spring 기초 지식
스프링, 스프링부트에선 DB에 어떻게 접근하는지 알아보자 스프링 프레임워크와 스프링 부트는 데이터베이스 접근을 위해 매우 유연하고 효율적인 방법을 제공한다. 이번 포스트에서는 스프링에서 데이터베이스에 접근하는 다양한 방법을 탐구해 본다. 우선, 데이터 접근을 위한 기본 구조인 DAO(Data Access Object)에 대해 알아보고, ORM(Object-Relational Mapping)을 위한 Mapper의 사용과 그 특징을 살펴볼 것이다. 또한, MyBatis와 같은 SQL 매핑 도구를 사용할 때 유용한 @Mapper 어노테이션의 중요성과 사용시 주의점에 대해서도 다룰 예정이다. 이를 통해 스프링을 사용한 데이터베이스 접근 방식의 깊이와 유연성을 이해할 수 있을 것이다. 1. DAO란 무엇인가? 1..
[Spring] 스프링의 익명 클래스 활용
·
Spring/Spring에서 Java 활용하기
스프링 프레임워크에서 익명 클래스를 활용하는 사례를 알아보자 📌 서론 스프링은 Java 기반의 엔터프라이즈 애플리케이션 개발을 위한 강력한 도구로, 다양한 방식으로 익명 클래스를 활용하여 애플리케이션의 유연성과 재사용성을 높일 수 있다. 익명 클래스에 대한 기본적인 이해는 아래의 글을 보는것을 추천한다.👇🏻👇🏻 [Java] 익명 클래스 (Anonymous Class)란? 이번 포스트에서는 익명 클래스에 대해서 알아보자 📌 서론 Java의 익명 클래스는 주로 단순한 인터페이스 구현이나 추상 클래스 확장에 사용되는데, 이를 잘 활용하면 코드를 더 간결하고 명확 curiousjinan.tistory.com 1. 익명 클래스 사용예시 RestTemplate과 커스텀 ResponseErrorHandler구현 스프..
[Spring] 스프링 빈(Bean)을 함수형으로 등록하기
·
Spring/Spring에서 Java 활용하기
이전 포스팅에 이어서 함수형 프로그래밍의 사용방식을 알아보자.함수형 프로그래밍에 대한 것은 아래의 포스팅을 읽어보자. [Spring] 함수형 프로그래밍이란?함수형 프로그래밍에 대해 알아보자. 1. 함수형 프로그래밍이란?함수형 프로그래밍은 수학의 함수 개념을 프로그래밍에 적용한 패러다임이다. 이 패러다임에서는 순수 함수, 불변성, 고차 함수curiousjinan.tistory.com 1. 함수형 프로그래밍으로 Spring Bean 등록하기Spring Framework는 전통적인 애노테이션 기반 빈 등록 방식 외에도 함수형 프로그래밍을 활용한 빈 등록 방식을 지원한다. 함수형 빈 등록은 특히 이벤트 처리, 스트림 처리 등에서 유용하게 사용될 수 있으며, 코드의 간결성과 유연성을 높여준다. 예시: Consum..
[Spring] 함수형 프로그래밍이란?
·
Spring/Spring에서 Java 활용하기
함수형 프로그래밍에 대해 알아보자. 1. 함수형 프로그래밍이란?함수형 프로그래밍은 수학의 함수 개념을 프로그래밍에 적용한 패러다임이다. 이 패러다임에서는 순수 함수, 불변성, 고차 함수 등을 중시한다. 간단히 말해, 상태와 데이터를 변경하지 않고 함수를 조합하여 로직을 구성하는 방식이다. 순수 함수: 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 의존하거나 변경하지 않는다.불변성: 데이터는 변경되지 않고, 새로운 데이터가 생성된다.고차 함수: 함수를 인자로 받거나 함수를 반환하는 함수다. 순수 함수 (Pure Function)순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 의존하거나 변경하지 않는다. 이는 함수의 예측 가능성을 높이고, 테스트를 용이하게 만든다...