은로그

    [Spring] Rest-Assured 알아보기

    서론 카페 키오스크 개발 당시, MockMvc 테스트 도구를 활용하여 애플리케이션 서버에 배포하지 않고도 스프링 mvc의 동작을 재현하며 테스트를 수행할 수 있었다. MockMvc 리팩토링 과정에서 Rest-Assured라는 테스트 도구를 알게 되었고, 이번 포스팅은 두 가지를 비교하면서 Rest-Assured에 대해 자세히 정리해보려고 한다. Rest-Assured 등장배경 기존의 테스트 프레임워크들은 API 테스트를 작성하는 것에 있어서 RESTful API의 HTTP 요청 및 응답을 쉽게 작성하고 검증하는 것이 어려웠다. REST-Assured는 간편하게 HTTP 요청을 작성하고 응답을 검증하는 기능을 제공하여 API 테스트를 효율적으로 작성할 수 있도록 도와준다. 또한 단위 테스트, 통합 테스트로..

    [JPA] QueryDSL을 RepositoryImpl로 관리해보자.

    서론 JPA와 MyBatis의 자바 ORM을 모두 경험한 결과, MyBatis는 SQL 쿼리에 더 직접적인 접근을 가지고 JPA는 객체지향적인 접근을 가지고 있어서 정적 쿼리를 다루는 것은 JPA가 비교적 간단하고 직관적이지만 동적 쿼리를 다루는 것은, JPA가 상대적으로 어려움(엔티티와 속성의 제약)이 있다. JPA의 장점을 더 살리기 위해 쿼리를 분리화 해서 유지 관리하기 쉬운 방법을 모색했고, RepositoryImpl 클래스 내부에서 QueryDSL을 사용하여 쿼리를 생성하고 실행하는 방식을 찾았다. 이번 포스팅은 그 방식을 spring 코드 예시로 설명하며 정리해보려고 한다. Repository에서 QueryDSL 사용하기 public interface OrderRepository extends..

    [IntelliJ] 키셋 설정과 단축키로 효율적으로 테스트하기

    서론 웹 개발 환경에서 IntelliJ IDEA가 각광받는 이유 중 하나는 개발에 필요한 플러그인, 편의성 다양한 도구등을 내장하고 있기 때문이라고 생각한다. IntelliJ의 추가적인 키셋 설정은 반복 작업의 자동화로 편의성을 높일 수 있다. 이번 포스팅에는 TDD를 작성하는 과정을 예시로 키셋 설정 방법을 정리해보려고 한다. 포스팅은 Window OS에서 작성되었습니다. 메일 서비스 TDD 주도개발 매출 통계 내역을 메일로 전송하려고 한다. 간단하게 생각해서 메일 서비스에 필요한 것은 무엇일까? - 메일 전송 파라미터를 담을 메서드 - 메일 전송 결과를 판단할 타입 - 메일 내용을 담을 Entity 등이 있을 것 같다. 메일서비스의 테스트 생성부터 테스트코드 작성 키셋, 통합테스트를 위한 gradle..

    [NetWork] 인증방식 JWT, Session, Cookie 정리

    서론 현재 REST API를 적용시키면서 데이터와 비즈니스 로직을 명확히 구분해 나가는 방식으로 개인 프로젝트를 진행하고 있다. 따라서 기존에는 회원가입에서 사용하던 Session과 Cookie를 이용한 인증 방식에서 JWT(JSON Web Token)을 사용하게 되었고, 이 용어들을 정리하고 개인 프로젝트를 진행하기로 하였다! Cookie 등장배경 HTTP는 인터넷상에서 데이터를 주고받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다. 클라이언트가 서버에게 요청을 보내면, 서버는 응답을 보냄으로써 데이터를 교환한다. HTTP는 비연결성 및 무상태성이라는 특징을 가지고 있다. HTTP는 요청 처리 후 연결을 끊어버리기 때문에, 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않다. 이 비연결성의 ..

    [MVC] DTO 역할 구분, 프로젝트 흐름도 분석

    서론 이전에 Entity와 Dto를 분리하고 사용하는 방법에 대해 확인해 보았다. 이후, Dto를 활용하는데 Dto는 역할과 책임을 명확히 하기 위해 requestDto와 responseDto로 나눌 수 있다는 사실을 알게 되었다. 여기서 Dto는 어디서 Entity가 치환이 되는 것이며, 어디서 반환되는 것일까? 이번 포스팅에는 DTO의 역할을 정리하고, Dto와 Entity가 사용되는 부분을 데이터 흐름도를 그려서 확인해 보며 정리하는 시간을 가지려고 한다. Dto의 역할 Dto (Data Transfer Object) 클래스는 주로 데이터 전송에 사용되는 객체이다. 보통 데이터베이스의 엔티티와 1:1로 매핑되는 경우가 많은데, 이 경우 DTO 클래스는 엔티티의 필드와 유사한 구조이다. 하지만 엔티티..