Backend
테스트 코드의 필요성 및 실천 방법론 테스트 코드의 필요성과 "좋은 테스트 코드"를 작성하기 위한 방법론에 대해서 작성한 내용이다. 테스트 코드를 "왜" 작성하고 "어떠한 마음가짐"으로 임할 지에 대해서 서술해두었으니 읽어보면 좋을 것 같다. https://sjh9708.tistory.com/238 [Spring Boot] 좋은 테스트 코드 : 필요성 및 실천 방법론 개요테스트 코드의 필요성 수동 테스트의 문제점 수동으로 테스트 한다는 것은 곧 사람이 직접 테스트를 수행한다는 것이다. 특정한 케이스를 직접 넣어보고, 출력이나 로그 따위를 살펴보거나 디sjh9708.tistory.com JUnit이란? 자바를 위한 단위 테스트 프레임워크이다. 메소드, 클래스 및 패키지에 대한 단위 테스트를 작성하..
Stream API Java 8에서 소개된 Stream API는 컬렉션, 배열 등의 데이터 소스로부터 데이터를 받아와서 원하는 형태로 가공하거나 필터링할 수 있는 기능을 제공한다. Stream API를 사용하면 데이터 처리 작업을 병렬로 수행할 수 있어서 멀티스레드 환경에서의 성능을 향상시킬 수 있다.또한 데이터 처리 과정을 람다식과 함께 사용하여 한 줄로 간결하게 표현할 수 있어 가독성을 높여준다. https://sjh9708.tistory.com/190 [Java] 람다식(Lambda Expression)과 함수형 프로그래밍람다식(Lambda Expression) 람다식은 함수형 프로그래밍에서 사용되는 개념으로, 간결하고 명확한 방식으로 익명 함수를 표현하는 방법이다. 자바 8부터 도입되었으며, 함수..
람다식(Lambda Expression) 람다식은 함수형 프로그래밍에서 사용되는 개념으로, 간결하고 명확한 방식으로 익명 함수를 표현하는 방법이다. 자바 8부터 도입되었으며, 함수형 인터페이스의 구현을 간단한 방법으로 할 수 있다. 람다식의 기본적인 표현 식은 다음과 같다. () 안에 파라미터들을 선언하고 ->(화살표)로 이은 후 {} 안에 동작 혹은 리턴을 작성한다. (parameter1, parameter2, ...) -> { body } (String s) -> { System.out.println("Hello World") } (int a, int b) -> { return a + b; } 이는 다음의 함수를 표현한 것과 같다. void sayHello(String s){ System.out.pr..
내부 클래스 내부 클래스(inner class)는 다른 클래스 내부에 선언된 클래스를 의미한다. 내부 클래스는 클래스의 멤버로 간주되며, 속해있는 클래스의 멤버 변수와 메서드에 쉽게 접근할 수 있다. 외부 클래스라는 단어가 나올 텐데 내부 클래스가 속해있는 클래스를 칭하는 단어라고 생각하면 된다. 내부 클래스의 종류에는 크게 네 가지가 있다. 멤버 내부 클래스(Member Inner Class): 외부 클래스의 멤버 변수와 메서드와 동일한 수준에서 선언된 클래스. 외부 클래스의 인스턴스에 종속적이며, 따라서 외부 클래스의 인스턴스가 생성되어야만 사용할 수 있다. 정적 내부 클래스(Static Inner Class): 내부 클래스가 정적으로 선언된 경우이다. 외부 클래스의 인스턴스와 독립적으로 동작하며, ..
Generic Type 제네릭(Generic) 타입은 자바에서 클래스 또는 메서드를 정의할 때, 타입을 파라미터화하는 기능이다. 사용 목적은 다음과 같다. 1. 어떤 값이 하나의 참조 자료형이 아니라 여러개의 참조 자료형을 사용할 수 있도록 프로그래밍 할 수 있다. 2. 참조 자료형이 변환될 때 검증을 컴파일러가 하기 때문에 안정적이다. 우리가 많이 사용하는 컬렉션 프레임워크도 제네릭 타입을 사용하는 대표적인 예시이다. List list = new ArrayList(); 컬렉션은 제네릭 타입을 사용하여 List가 여러가지 타입의 Element를 받을 수 있도록 설정할 수 있어 클래스 사용의 유동성이 매우 높다. 또한 제네릭을 사용하여 List를 선언함으로써 해당 List가 어떤 타입의 요소를 다루는지 명..
JPA를 사용할 때, QueryDSL을 도입하는 가장 큰 이유는 동적 쿼리 작성에 매우 유연하다는 점이다. 이번 포스팅에서는 동적 쿼리를 작성하는 방법에 대해서 알아보도록 하겠다. 사용할 데이터 1. Author : Book = 1 : N Author(저자)는 여러 개의 Book(책)을 가진다. 2. Author : Organization = N : 1 Author(저자)는 한곳의 Organization(조직)에 속한다. 3. Book : Review = 1 : N Book(책)은 여러 개의 Review(리뷰)를 가진다. @Entity @Table(name = "Organization") @Getter @Setter public class Organization { @Id @GeneratedValue(s..
이전 포스팅들에서 JPQL, Spring Data JPA Repository, QueryDSL 등을 통해서 데이터를 조회하는 방법들에 대해서 다루어 보았었다. 이번에는 쿼리 결과로 나온 Entity 혹은 Tuple들을 DTO로 매칭하는 방법을 알아보려고 한다. 기본적인 DTO 변환 방법 : 스트림 API ToOne 관계, ToMany 관계 조회 매핑 ModelMapper 활용 ToOne 관계, ToMany 관계 조회 매핑 프로젝션 프로젝션 사용 방법들 서브쿼리, Case, ToOne 관계, ToMany 관계 조회 매핑 QueryProjection ToOne 관계, ToMany 관계 조회 매핑 사용할 데이터 1. Author : Book = 1 : N Author(저자)는 여러 개의 Book(책)을 가진다..
이전 포스팅에서 기본적인 QueryDSL의 검색 쿼리 문법에 대해서 살펴보았었다. 이번 포스팅에서는 연관된 다른 릴레이션과의 연산을 수행하는 Join과 Subquery 방법에 대해서 알아보도록 하겠다. 아래 포스팅은 QueryDSL의 기본 검색에 대한 문법을 정리해 둔 것이니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/175 [Spring Boot/JPA] QueryDSL 문법(1) : 기본 검색 (선택, 조건, 정렬, 집계, 그룹화) 이전 포스팅에서 QueryDSL 사용을 Repository에서 할 수 있도록 설정하는 방법에 대해서 다루어 보았었다. 이제 실제로 자주 사용되는 SQL문을 QueryDSL을 통해 작성해보도록 하자. JpaRepository는 인터페이 sjh..
이전 포스팅에서 기본적인 QueryDSL의 검색 쿼리 문법에 대해서 살펴보았었다. 이번 포스팅에서는 연관된 다른 릴레이션과의 연산을 수행하는 Join과 Subquery 방법에 대해서 알아보도록 하겠다. 아래 포스팅은 QueryDSL의 기본 검색에 대한 문법을 정리해 둔 것이니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/175 [Spring Boot/JPA] QueryDSL 문법(1) : 기본 검색 (선택, 조건, 정렬, 집계, 그룹화) 이전 포스팅에서 QueryDSL 사용을 Repository에서 할 수 있도록 설정하는 방법에 대해서 다루어 보았었다. 이제 실제로 자주 사용되는 SQL문을 QueryDSL을 통해 작성해보도록 하자. JpaRepository는 인터페이 sjh..