Java/Spring Boot
이전 포스팅에서 TDD(테스트 주도 개발)과 단위 테스트를 @SpringBootTest를 사용해서 작성해보았다.이번 포스팅에서는 테스트 코드를 작성할 때 많이 사용되는 Mockito를 사용해서 단위 테스트 코드를 작성해보고, @SpringBootTest와 비교해보도록 하겠다. https://sjh9708.tistory.com/195 [Spring Boot] TDD : JUnit 단위 테스트 코드 작성하기 + Assert 메서드 정리요즘 프로그램을 작성할 때, 테스트 코드를 작성하는 것은 매우 필수적이다. 이번 포스팅에서는 TDD(테스트 주도 개발)과 단위 테스트의 개념에 대해서 살펴보고, JUnit을 통해 단위 테스트 코드를sjh9708.tistory.com @SpringBootTest 이전 포스팅에서..
요즘 프로그램을 작성할 때, 테스트 코드를 작성하는 것은 매우 필수적이다.이번 포스팅에서는 TDD(테스트 주도 개발)과 단위 테스트의 개념에 대해서 살펴보고, JUnit을 통해 단위 테스트 코드를 작성하는 방법을 알아보려고 한다. 1. 개발 방법론 : 전통적 방식의 한계와 TDD의 등장 및 개념2. 테스트의 종류 : 단위 테스트, 통합 테스트, 부하 테스트3. 테스트의 규칙과 JUnit 소개4. 테스트 코드의 기본적인 작성 방법 및 구조, 실행 방법5. 테스트 코드 작성 프로세스 : 요구사항에 따라 테스트 케이스를 정의한 후, 개발 -> 테스트 코드를 작성하는 방법6. 다양한 Assert 함수 및 AssertJ 함수 살펴보기 : 값 비교, 대소 비교, 문자열 비교, Null 검증, 조건 검증, 컬렉션 조..
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..
이전 포스팅에서 QueryDSL 사용을 Repository에서 할 수 있도록 설정하는 방법에 대해서 다루어 보았었다. 이제 실제로 자주 사용되는 SQL문을 QueryDSL을 통해 작성해보도록 하자. JpaRepository는 인터페이스 단에서 기본적인 쿼리를 제공해주지만 동적이고 복잡한 쿼리를 작성이 필요할 때에 QueryDSL 사용을 하는 것이 유리할 수 있다. 아래 포스팅은 Spring Boot 3점대 이상에서 QueryDSL을 설정하고, Repository에서 사용하는 방법을 정리한 글이니 만약 설정방법을 알고 싶다면 참조하면 좋을 것 같다. https://sjh9708.tistory.com/174 [Spring Boot/JPA] QueryDSL 설정과 Repository에서의 사용 이번 포스팅에서..
이번 포스팅에서는 Spring Boot에서 이전에 사용했던 JPQL와 JpaRepository 보다 조금 더 객체지향스럽고 유동적인 동적 쿼리를 작성할 수 있도록 QueryDSL 사용을 위한 설정을 해보도록 하자. QueryDSL에 사용에 대한 견해를 미리 말해보자면 유연한 쿼리 작성과 안정적인 코드를 작성하기 위해서 매우 유용할 것이라는 말을 하고 싶다. 개인적으로는 C# .NET 진영에서 사용했던 Entity Framework와 유사하게 Builder 패턴을 이용한 동적 쿼리 작성과 객체지향 코드라는 점이 유사하여 진입하기가 괜찮았기도 했다. 다른 진영의 객체지향 ORM을 사용해보았다면 적응하기 쉬울 것 같다. QueryDSL의 필요성 return em.createQuery("select a, co..
작년 말, Spring 2점대 버전의 지원이 공식 중단되면서, 이제 웬만하면 Spring 3 버전대를 사용할 것을 Spring 진영에서 권장하고 있다. 그 중 Spring Security의 경우 변화한 내용이 조금 있는 편이라 이 참에 Spring Security를 이용한 JWT 인증과 인가를 해당 버전대에 맞추고, 정리하여 다시 작성해보려고 한다. 아래는 Spring 2점대 버전에서의 JWT Security를 설정했던 포스팅들인데, 3점대 버전에서도 근본적인 과정들이 바뀐 것은 아니다. 만약 2점대 버전에서의 설정이 궁금하다면 아래 포스팅들의 내용을 참고하자. 회원 가입 : 해당 부분은 Security에 의존하지 않아, 회원 가입 로직이 필요하다면 참고하면 될 것 같다. https://sjh9708...