전체 글

    Swagger 를 통한 REST API 문서화

    백엔드 개발자가 작성한 REST API 를 프론트엔드 개발자에게 문서화해서 넘겨줄때, 매번 일일이 문서화하여 작성하는 일은 매우 불편할 것이다 그래서 이런 단점을 개선하기위해 나온 것이 Swagger 이다 Swagger 는 백엔드 개발서버가 실행될때, 백엔드 서버내의 모든 API 를 탐색해서 알아서 문서화하여 UI 까지 제공한다 사용방법도 어렵지 않다 * 3.0 이상의 버전과 그 이하의 버전은 적용방법이 약간 다르다 여기서는 3.0 미만의 버전만 설명한다 또한 maven을 기준으로 설명되어 있다 (3.0 이상의 버전은 아래 링크 참조) woowacourse.github.io/javable/post/2020-08-31-spring-swagger/ API 문서 자동화 - Swagger 팔아보겠습니다 Spri..

    MapStruct 란?

    Mapstruct 란 클래스간 변환을 쉽게 하기 위해 등장한 라이브러리다 - DTO, Entity : DTO 란 Data Transfer Object 를 말하며, 계층간 데이터 전송을 위해 만든 Bean 을 의미한다 Entity 란 DB 의 테이블과 매핑시키기 위한 자바 객체를 의미한다 Entity 에 정의해둔 필드변수 외에도 별도로 어떤 값을 유저로 부터 받아와야 한다거나 혹은 Entity 에는 없는 필드를 리턴시켜줘야 할때, DTO 를 이용하는데, 이런 작업을 가능하게하려면, Entity 와 DTO 간에 매핑과정이 필요하다 - maven 을 이용하는 경우 : maven 을 이용하는 경우 의존성 주입을 다음과 같이 해줘야 한다 pom.xml org.projectlombok lombok ${lombok...

    Lombok 이란?

    Lombok 이란 자바 어플리케이션을 개발함에 있어서, 반복적으로 작성되는 코드들 (boilerplate code) 을 작성하는 과정을 간소화 시킨 라이브러리이다. 예를들어, 객체를 선언할때 마다 각 필드 변수들에 대해서 매번 getter, setter, constructor 등을 선언해야 했다. Lombok 을 사용하게 되면 이런 번거로운 작업을 몇개의 어노테이션을 정의하는것 만으로 크게 줄일 수 있다. 대표적인 lombok 관련 어노테이션을 몇개만 알아보면 1. @Getter, @Setter : 객체의 필드 변수에 접근하기 위한, getter / setter 메소드를 작성하지 않고도 lombok 이 getter / setter 메소드를 만들어준다. - 예시 @Getter @Setter public c..

    Spring Boot - Spring Data REST

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ 앞선 포스팅인 Spring Boot - DAO (sdy-study.tistory.com/255) 에서 JpaRepository 라는 것을 알아봤고, 이를 통해서 기존에 DAO 구현을 위해서 작성하던 boilerplate code 를 어떻게 간소화했는지 알아봤다 이번에는, REST API 의 코드를 간소화 하는 방법에 대해 알아본다 - Spring Data REST : 여기서도 취지는 전에 다뤘던 포스팅(sdy-study.tistory.com/255) 내용과 같다 프로젝트 내에 엔티티 클래스가 갯수가 많아지면, 각 엔티티 클래스에 대해서 각각 REST API 를 써줘야했다 Student Entity 가 있..

    Spring Boot - DAO

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ - DAO : DAO 는 Data Access Object 의 약자로, 레이어드 아키텍쳐에서 Persistence Layer 에 위치하고 있으며, Spring 이 DB 에 접근하기 위해 사용되는 객체이다. 이전 포스팅에서는 Spring Framework 를 이용해서 DAO 를 만들때, Hibernate ORM 을 이용했지만, Spring Boot 에는 DAO 를 만들기 위한 방법이 3가지가 존재한다 1. 기존처럼 Hibernate API 를 사용하는 경우 2. 표준 JPA API 를 이용하는 경우 3. Spring Data JPA 를 이용하는 경우 이 포스팅에서는 이 세가지의 방법에 대해 알아본다 - 1..

    Spring Boot - Overview

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ 이전 포스팅 까지는 Spring Framework 에 대한 기본 개념들과 기초적인 예제들을 학습해보았다 이번에는 Spring Boot 에 대해서 알아본다 * Spring Boot 가 만들어진 이유 : Spring Boot 가 만들어진 이유는 첫번째로, 기존의 Spring Framework 는 진입하기 위해서 필요한 사전지식이 너무 방대하다 (물론 결국에는 다 알고 있어야 하기는 하지만, 시작 하는 입장에서는 상당히 부담스러운 면이 있다) 두번째로, 기존의 Spring Framework 는 의존성 모듈을 일일이 전부 관리해줘야 했다 (물론 Spring Boot 도 필요한 모듈들을 받아와야 하긴 하지만, s..

    BOJ 1818 - 책정리

    www.acmicpc.net/problem/1818 1818번: 책정리 동혁이는 캠프가 끝나고 집에 가서 책꽂이 정리를 하고 있었다. 책들은 한 줄로 길게 꽂히 있었다. 동혁이의 책은 1번부터 N번까지 숫자로 표현되고 현재 뒤죽박죽 되어있는 순서를 왼쪽부터 www.acmicpc.net LIS 알고리즘의 응용문제다 LIS 는 가장 긴 증가 부분 수열을 찾는 알고리즘으로 수열을 찾을때 이분탐색을 활용하여 찾아야만 O(NlogN) 의 시간 복잡도로 탐색이 가능하다. - 참고 : chanhuiseok.github.io/posts/algo-49/ 알고리즘 - 최장 증가 부분 수열(LIS) 알고리즘 컴퓨터/IT/알고리즘 정리 블로그 chanhuiseok.github.io - C++ #include #define M..

    BOJ 17828 - 문자열 화폐

    www.acmicpc.net/problem/17828 17828번: 문자열 화폐 첫 번째 줄에 문자열의 길이 N(1 ≤ N ≤ 5,000,000)과, 문자열의 가치를 나타내는 정수 X(1 ≤ X ≤ 500,000,000)가 공백으로 구분되어 주어진다. www.acmicpc.net 거의 구현문제에 가깝다 먼저 예외 처리 사항으로 1) 문자열 화폐의 값어치 X 가 길이 N 보다 작은 경우 2) 문자열의 길이 N개의 Z 가 있음에도 X 보다 작은 경우 만들수 없는 수 이므로 예외처리로 중단 시킨다. 예외처리를 거치면 문자열이 사전순으로 나와야 하기 때문에 A 로 먼저 다 초기화 시키고 그만큼 넣었으므로, X 에 N 을 뺀다 그리고 사전순으로 최대값을 찾아야 하므로 문자열 뒤에서 부터 탐색을 시도하면서 X 값이..