
Facade 패턴 적용 이유 Service가 Controller의 DTO에 의존 개인 프로젝트를 진행하고 있던 중 고민인 부분이 생겼다. 바로 Controller - Service - Repository 계층에서 요청 또는 응답 DTO가 어디까지 진입 가능할지, 어디서부터 만들어져 나갈지에 대한 것이다. (참고로 여기서 말하는 DTO는 계층 간 DTO가 아닌 사용자 요청으로부터 오는 DTO 혹은 사용자에게 응답으로 전달되는 DTO를 말한다. 즉 Controller의 인자 혹은 반환값으로 전달되는 DTO) 기존에는 해당 블로그를 참고하여 DTO가 Service Layer까지는 들어오고 해당 계층에서 나갈 수 있도록, Entity ↔ DTO 간 변환은 별도의 Mapper 클래스가 수행하도록 구현하였다. 따라..

이번 글에서는 GoF Design Patterns 중 하나인 Facade 패턴에 대해 알아보고자 한다. 개발을 하면서 누군가는 자신도 모르게 이 Facade 패턴을 적용해본 적이 있을 것이다. 굳이 어렵게 Facade 라는 이름을 붙였어야 했나 싶을 정도로 간단한 패턴이다. 그럼 자세히 알아보자. Facade 패턴이란? Facade is a structural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classes. Facade는 구조 디자인 패턴으로 복잡한 클래스들의 사용에 대한 간단한 인터페이스를 제공한다고 한다. 다시 말해 클라이언트가 A, B, C ..

API를 개발하다보면 클라이언트로부터 String 타입의 날짜 데이터를 전달받는 경우가 있다. 요청받은 날짜 데이터를 처리하기 위해서는 문자열 데이터를 LocalDate 또는 LocalDateTime과 같은 날짜 관련 타입으로 역직렬화해주어야 한다. 또는 LocalDateTime 타입의 객체를 클라이언트가 원하는 패턴으로 직렬화하여 전달해주어야 할 수도 있다. 스프링에서는 날짜 관련 클래스를 요청 및 응답으로 주고 받을 수 있도록 다양한 방법을 지원하며 크게 4가지 방법이 있다. 각각에 대해 자세히 알아보고 자신의 상황에 맞게 적절히 선택해보자. 앞으로의 예제에서 사용할 아래 요청 클래스는 스케줄을 생성하는데 사용되는 DTO로, 요청을 처리하기 위해서는 사용자가 보낸 "2023-11-22 14:00:00..

스프링 프로젝트에서 특히 관계형 DB를 사용하는 경우, 일반적으로 스프링 데이터 JPA + Querydsl의 조합을 사용한다. 사실 자바에서 관계형 데이터베이스와의 연결을 위해서는 JDBC(자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스)가 필요한데, 왜 JDBC가 아닌 JPA를 사용는지, 또한 Querydsl을 함께 사용했을 때의 이점은 무엇인지 간단히 알아보고자 한다. 단순히 Querydsl 설정이 궁금하신 분들을 스킵하고 링크로 바로 넘어가시길... What is ORM? ORM은 Object-Relational Mapping의 약어로, 말 그대로 '객체지향 패러다임을 사용해서 데이터베이스로부터 조회된 데이터를 조작할 수 있도록 하는 기술'을 의미한다. ..
- Total
- Today
- Yesterday
- Java
- ParameterizedTest
- junit5
- rest api
- Assertions
- spring
- facade 패턴
- Front Controller
- mockito
- 전략 패턴
- Linux
- spring aop
- spring boot
- servlet filter
- SSE
- 서블릿 컨테이너
- Git
- 모두의 리눅스
- vscode
- C++
- Gitflow
- JPA
- FrontController
- 단위 테스트
- 디자인 패턴
- Transaction
- Spring Security
- QueryDSL
- 템플릿 콜백 패턴
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |