
Spring 기반 애플리케이션에서 DTO(Data Transfer Object)와 Entity 간 변환은 대부분의 API 요청과 응답에서 필수적으로 수행되는 작업이다. 이 과정에서 비효율적으로 구현되면 코드 중복, 유지보수의 어려움, 때로는 성능 저하까지 초래할 수 있다. 이 글에서 다양한 DTO-Entity 변환 전략과 예시 및 장단점을 비교해보려고한다. MapStruct와 ModelMapper 학습 소스코드는 깃허브에서 확인할 수 있다. 프로젝트 구성프레임워크 : Spring boot 3.3.9빌드 도구 : gradeJava 버전 : 17주요 의존성 :- Spring Data JPA- Spring Web- Lombok- MapStruct- ModelMapper- Postgresql 14 (Docke..

배경설명회사에서 기업 신용 평가 서비스를 개발 중 프론트엔드 개발자로부터 이슈를 전달받았다."가업 재무제표가 2개씩 조회돼요..!" (음... 동시성인가 보구먼) "수정하는데 꽤 오래 걸릴 것 같아요 ㅠㅠ." 그렇게 5일 동안 겪은 이야기다. 원인 분석로직은 아래 순서와 같이 수행된다. 이 과정에서 문제 되는 부분은 "재무제표 테이블 조회 결과가 없으면 - 외부 API 호출 후 응답값을 저장"이다.1. 사업자번호로 재무제표 테이블에 기업을 조회한다.2. 조회 결과가 없으면 외부 API를 호출 후 DB에 저장한다.3. 저장된 기업 정보를 다시 조회한다. 첫 번째 쓰레드가 외부 API 호출 후 DB 저장 전에 두 번째 쓰레드가 재무제표 테이블을 조회하기 때문에 두 번째 쓰레드에서 외부 API 호출 후 D..

이전 포스팅에서 Swagger 입문기에 대해 글을 썼었다. 이후 신규 프로젝트에 API 명세서 역할로 Swagger를 사용 중이다. 요즘 들어 Swagger의 장단점을 몸소 겪고 있는데, 추후에 관련 내용을 정리 후 포스팅 해보려고 한다.(궁금하신 분은 아래 포스팅 참고!) 2024년12월 Swagger 입문기2줄 요약프런트엔드 개발자와 협업을 위해 Swagger 적용각 어노테이션별 특징 및 사용법 정리 개발환경Spring boot : 3.3.2Swagger(=OpenAPI): 2.6.0Java: 17 배경설명한동안 신규 프로젝트의 기능 개발에만better-tomorrow-than-today.tistory.com 3줄 요약- 장점: 테스트 강제, 소스코드 침범 안 함- 단점: 설정 겁나 복잡함- 테..

2줄 요약프런트엔드 개발자와 협업을 위해 Swagger 적용각 어노테이션별 특징 및 사용법 정리 개발환경Spring boot : 3.3.2Swagger(=OpenAPI): 2.6.0Java: 17 배경설명한동안 신규 프로젝트의 기능 개발에만 집중한다고 쿼리와 아키텍처 구성, 테이블 설계에만 빠져 살았습니다. 개발단계가 어느 정도 수면 위로 올라오기 시작했고, 마침 주간 스프린트에서 Swagger 적용 건의가 있어 신규 프로젝트에 적용해 보기로 했습니다. 여러 블로그와 문서를 찾아보면서 Spring boot 3.0 이상 버전부터 Swagger의 많은 변화가 있어 포스팅을 통해 정리해보고자 합니다. Swagger? OAS? Spring Rest docs? 용어 정리부터Open API Specificatio..

한 달간의 기업정보 조회 API 개발 내용을 정리하기 위한 포스팅입니다. 📌 2줄 요약1) 외부 API 호출 시 QueryParameter의 다양한 조건을 어떻게 처리할 것인가? → UriComponentsBuilder2) API 호출시 걸린 시간과 Endpoint uri를 로그로 기록하려면? → Interceptor 1. 개발 배경신규 API의 역할을 한마디로 정리하면 미들웨어(Middleware)입니다. 자사 플랫폼 서비스(이하 A서비스라고 호칭)와 분리되어 운영되며, 주 업무는 외부 API 호출 및 DB 저장입니다. A서비스에서 기업 정보가 필요한 경우 신규 API를 통해서 정보를 조회하도록 강제해 직접적인 외부 API를 막아두었습니다. 이렇게 한 이유는 크게 두 가지가 있습니다. 서비스 ..

테스트 환경의존성spring-boot-starterspring-boot-starter-data-jpaspring-boot-start-testh2 databaseplugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java'}group = 'com.example'version = '0.0.1-SNAPSHOT'sourceCompatibility = '11'repositories { mavenCentral()}dependencies { implementation 'org.springframework.boot:spring-..
- Total
- Today
- Yesterday
- 전자정부프레임워크
- JWT
- 항해99
- Comparable
- 챗봇
- 글또
- Comparator
- 취리코
- BufferedWriter
- BFS
- RASA
- Spring
- 객체정렬
- springboot
- 백준
- spring boot
- 취업리부트코스
- BufferedReader
- 개발자취준
- thymeleaf
- 코딩테스트
- 재기동
- Java
- 코드트리
- 유데미
- 자바
- 나만의챗봇
- NLU
- dxdy
- script
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |