전체 글

전체 글

    JPA 영속성 컨텍스트(Persist Context)에 대해 알아보자

    JPA 영속성 컨텍스트(Persist Context)에 대해 알아보자

    영속성 컨텍스트란 ? 엔티티를 관리하고 저장하는 환경 Jpa 어플리케이션과 Database 사이에서 객체를 관리하는 논리적 개념 엔티티의 생명주기 비영속 (new/tansient) 영속(managed) 준영속(detached) 삭제(removed)Team.java @NoArgsConstructor @Entity @Getter public class Team { public Team(String name) { this.name = name; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; }비영속 (new/transient) 영속화 되기 전의 상태 순수한 Entity 객체 Entity..

    OCP(Open-Close-Principle) 개방 폐쇄 원칙이란?

    OCP(Open-Close-Principle) 개방 폐쇄 원칙이란?

    예제 및 테스트 코드는 github 에서 확인 가능합니다. OCP (Open Closed Principle) 정의 개방 폐쇄 원칙 소프트웨어 개체는 확장에 열려있어야 하고 수정에는 닫혀있어야 한다는 원칙. OCP (개방 폐쇄 원칙)의 의미 어떤 기능에 대해 추가 요구사항이 나타나도 그 기능을 사용하는 기존 코드는 수정되지 않아야 한다는 의미입니다. 확장되는 기능이 기존 코드와 의존을 하게되면 추가되는 요구사항에 유연하지 못하고 개발자가 유지보수하는데 어려움이 있습니다. 예제 코드 OCP (개방 폐쇄 원칙) 을 준수하지 않은 예시와 준수한 예시 두가지를 들어 비교해보겠습니다 스카이스캐너 , 마이리얼트립에서 제공하는 항공편 예약 서비스를 만든다고 가정해보겠습니다. 그렇다면 예약을 하기 위해서는 각 항공사와 ..

    Spring @Valid Annotation을 이용한 유효성 검증과 예외처리

    Spring @Valid Annotation을 이용한 유효성 검증과 예외처리

    예제 및 테스트 코드는 github 에서 확인 가능합니다. Valid 사용하기 Spring 에서는 유효성 체크를 위하여 @Valid annotation 을 지원합니다. Valid는 JSR-303(Bean Validation) 표준 스펙으로서 제약조건이 있는 객체에게 Bean Validation 을 이용해 조건을 검증하는 어노테이션입니다. 사용 예제 환경 Spring boot 2.6.2 java11 build.gradle // gradle implementation('org.springframework.boot:spring-boot-starter-validation') valid 를 사용하기 위해 위 의존성을 추가합니다. spring boot 2.3 이상부터는 spring-boot-starter-web 의..

    MapStruct를 이용해 객체를 변환하는 방법

    MapStruct를 이용해 객체를 변환하는 방법

    예제 및 테스트 코드는 github 에서 확인 가능합니다. 개요 소스코드를 작성하다보면 Layer를 전환하며 객체를 전환하며 매핑하거나 여러 객체를 합치거나 하는 다양한 경우를 만나게 됩니다. 흔히 겪는 예시로는 presentation layer 에서는 DTO , service layer , repository layer 에서는 Entity 를 사용하는 예시를 들 수 있습니다. 이를 매핑하기 위해서는 model mapper , 정적 팩토리 , object mapping 등의 방법을 다양한 이용해 모델을 매핑하고 있습니다. 저는 제가 사용하는 mapstruct 에 대해 간략하게 소개하려고 합니다. mapstruct mapstruct github page에서는 mapstrut를 다음과 같이 소개하고 있습니다..