
현재 진행중인 프로젝트에서 특정 비즈니스 로직들(알림 등)로 인해 핵심 비즈니스 로직의 처리가 제대로 이루어 지지 않거나 코드의 가독성이 떨어지는 상황이 발생했다.이런 문제들을 해결 하기 위해 리서치를 진행하여 @TransactionEventlistener라는 기술을 알게 되었고, 이를 이용하여 부가 비즈니스 로직들로 인한 문제가 핵심 비즈니스 로직을 방해하지 않도록 조치할 수 있었다.그러나, '기술에 대한 히스토리를 알지 못한 상태로 도입했다.'라는 생각이 들어 오늘은 Spring에서 제공하는 Event 처리 방식에 대해 기본부터 알아보고자 한다.EventListenerSpring에서 Event를 처리하기 위해 사용되는 가장 대표적인 요소는 @EventListener 어노테이션이다.@EventListe..

1. 개요현재 참여중인 프로젝트에서는 백엔드 애플리케이션간의 HTTP 통신을 위해 Spring Cloud OpenFeign을 사용하고 있습니다. 기존 제가 담당하는 업무에서는 직접적으로 다뤄볼 일이 없었으나, 최근 새로 배정 받은 업무로 인해 Feign을 제대로 사용해볼 기회가 생겼습니다. "이 기회에 사용할 기술을 제대로 알고 사용해보자."라는 취지로 공식문서에 기재된 기본적인 구성 정보들을 학습했으며, 이번 글에서는 이러한 학습을 통해 알게된 내용과 그 과정에서 발생한 궁금증을 해소하여 정리한 내용을 공유드리려 합니다. 2. Open FeignOpenFeign은 Java HTTP 클라이언트 작성 과정을 간소화하기 위한 라이브러리입니다. 즉, Spring 프레임워크를 사용하지 않아도 사용가능합니다...

이번글에서는 현재 진행 중인 애완동물 분양 플랫폼 프로젝트에서 백엔드 API를 개발중 발생하는 중복 및 단순 매핑 코드들을 최소화하기 위한 개선 시도 및 결과에 대해 공유드리겠습니다. 개선 전 상황과 목표 JPA를 사용시 Entity 클래스를 통해 데이터베이스와 매핑함으로 Entity를 외부에 노출시 데이터 무결성 및 보안 그리고 캡슐화에 좋지 않습니다. 이러한 외부 노출을 피하기 위하여 dto를 이용하며 dto to entity 또는 entity to dto 와 같은 매핑 로직을 통해 데이터를 주고 받습니다. 하지만 이러한 매핑 과정이 많은 비용을 발생시키고 있다고 판단하였으며 어떻게 최소화 할 수 있을까 고민했습니다. 또한, 현재 프로젝트에서는 총 3개의 이미지 테이블을 사용하고 있으며 5개의 컬럼이..

오늘은 pagination개발을 위해 Spring에서 제공하는 Pageable & Slice interface 를 분석한 내용을 공유해보려합니다. Pageable Pageable은 org.springframework.data.domain에 포함된 interface로써 PageRequest라는 별도의 구현체가 존재합니다. PageRequest pageRequest = PageRequest.of(1,10); Pageable pageableT0PageRequest = PageRequest.of(1,10); Pageable pageableT0PageRequest = Pageable.ofSize(10); Pageable은 PageRequest의 정적 팩토리 메서드(.of)를 사용하여 PageRequest 또는 P..

안녕하세요. 백엔드 개발자를 목표로 학습하는 주니어개발자입니다. 오늘은 JPA의 엔티티와 영속성컨텍스트를 학습한 내용을 간략하게 정리해보았습니다. 코드 예제보다는 이론 위주로 정리한 내용이라 JPA에 대한 기본 지식이 없을 경우 다소 어려울 수 있다고 있을 것 같습니다. 1. 엔티티(entity) 엔티티는 DB 테이블과 매핑하기 위한 객체입니다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String userName; @Embedded private Address homeAddress; ... } 위 예제는 엔티티를 ..
안녕하세요. 현재 백엔드 개발자를 목표로 취업을 준비중인 주니어 개발자입니다. 기존에 사용 중인 Object Mapping 기술인 Mybatis를 대신하여 Object Relational Mapping 기술인 JPA를 사용하고자 학습하게 되었으며, 학습 과정에서 알게된 내용을 바탕으로 JPA가 무엇인지, 그리고 왜 사용해야 하는지에 대한 내용을 정리해 보았습니다. What is JPA? 1. Java Persistence API. 즉, 자바 영속성 API를 뜻합니다. '영속성' 이란? 지속성이라고도 하며, 데이터를 생성한 프로그램이 종료되어도 사라지지지 않는 데이터의 특성을 말합니다. 저의 경우 처음 학습을 시작했을 때 위의 영속성의 정의를 JPA의 동작 방식과 연관하여 이해하기 쉽지 않았습니다. 하여 ..
- Total
- Today
- Yesterday