Introduction to AssertJ dependencies dependencies { testImplementation "org.junit.jupiter:junit-jupiter" testImplementation "org.assertj:assertj-core" } single static import를 통해 test class를 쉽게 추가할 수 있다. import static org.assertj.core.api.Assertions.*; 참고로, assertThat() 메서드만으로는 아무것도 증명할 수 없다. 증명의 대상을 설정하는 정도로 생각하면 좋을 것 같다. assertThat(anything); Object isEqualTo() 메서드는 객체의 참조를 비교한다. 따라서, 객체의 필드를 비..
[NoSQL] MongoDB 탐구하기 회사에서 MongoDB를 사용하는 프로젝트가 있다. 사실 저장, 수정, 조회, 삭제 api 활용이 전부인지라.. 그냥.. 사용하고 있었다. It's just... 😲 😨 😱 . 지금은 MongoDB를 효율적으로 사용하기 위해 몽고와 친해져야 할 때이다.🤭 🍬 🍭을 챙겨서 몽고의 마음을 사로잡아보자. . 참고로, MongoDB와 이제 막 친해지기 위한 단계로 깊은 내용은 담지 않았다...😢 깊은 내용은 몽고와 더 친해지면 준비할 예정이다.🧐 . 참고로, kciter 님의 MongoDB 이해하기 글이 많은 도움이 되었다. kciter 님 글과 MongoDB Manual을 참고하여 간략하게 정리해보았고, 자세한 설명은 각 링크를 참고해보면 좋을 것 같다. NoSQL Not..
Message Queue (Apach Kafka) A long~ time ago 는 아니고, 사알짝 머언 옛날부터.. 🐅 많은 기업에서 Message Queue 를 아주 활발하게 사용했다고 하는데.. Message Queue가 뭣인지 한번 탐구해 보려고 한다. 🕵 다들 돋보기 들고 따라와 보시게! 🤠🔎 . 참고로, 다양한 Message Queue 중 높은 처리량과 좋은 성능을 지닌 Kafka 중심의 설명이 될 것 같다.🧐 최범균님의 kafka 조금 아는 척하기 영상이 정말 많은 도움이 되었다. 메시지 지향 미들 웨어(Message Oriented Middleware: MOM)는 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서의 데이터 송수신을 의미 MOM을 구현한 시스템이 메시지 큐(Message ..
JPA 양방향 관계 Entity 저장하기 인간은 습관의 동물이다. 습관에는 대부분 좋은 습관이 많지만 그중에 나쁜 습관도 있다. 그것은 바로.. 원리를 모르고 개발하는 습관이다. 😯 . '요로케할 때 이렇게 했었으니까, 이렇게 해야지~!' 는 더 이상 통하지 않는다.. 사이드 프로젝트를 하며 깨닫는 부분이 많다. . 습관처럼 몸에 익어버린 방법들이 갑자기 뇌 정지가 오며 멈춰버렸을 때, 머릿속이 하얘지고 말았다. 적어도 왜 이렇게 개발했었는지 원리를 알았더라면, 이럴 일은 없었을텐데.. 정말 기본적인 것들 앞에서 갑자기 띠용🙄 할 때가 있다. (최근에 습관성 타이핑으로 노트북 비밀번호 까먹은 거는 진짜 비밀..🤫) . 본론으로, JPA 양방향 관계 Entity를 저장해보자. Situatio..
Spring Boot, Gradle 환경에 Querydsl 설정 방법 Spring Boot, Querydsl 최신 버전을 사용하면서 QueryDSL 적용 방법에 변동이 생긴 듯하다. 참고로, 현재 프로젝트는 spring-boot-2.6.3, gradle-7.3.2 버전을 사용 중이다. . 기존 방식대로 적용을 했을 때, 아래와 같은 에러가 발생하게 되었다. Unable to load class 'com.mysema.codegen.model.Type'. . 그럼.. 이제 어떤 방법으로 QueryDSL 설정을 해주어야 할지 확인해 보자! Gradle 먼저 Gradle 설정 방법이다. // 1. queryDsl version 정보 추가 buildscript { ext { queryDslVersi..
[JPA] JSON 직렬화 순환 참조 해결하기 순환 참조. JPA에서 양방향으로 연결된 엔티티를 JSON 형태로 직렬화하는 과정에서, 서로의 정보를 계속 순환하며 참조하여 StackOverflowError 를 발생시키는 현상 . 직렬화. 객체/데이터를 바이트 형태로 변환하여 네트워크를 통해 송수할 수 있도록 만드는 것 Situation Product 에서 ProductCategory를 조회할 수도 있고, ProductCategory 에서 Product 도 조회할 수 있어야 한다. Controller 에서 Product 목록을 JSON 형태 직렬화하여 반환해야 한다. @Getter @NoArgsConstructor @Entity public class Product extends BaseTimeEntity..
[우아한 Tech] 우아한 ATDD 2021년 3월에 진행된 우아한 테크 세미나에서 류성현님의 '우아한 ATDD' 스트리밍 영상을 보고 정리한 내용입니다. ATDD(인수 테스트 주도 개발)는 요구사항에 대한 인수 테스트를 이용하여 요구사항을 명확히 하고 모든 팀원이 요구사항에 대한 공통의 이해를 바탕으로 개발을 진행하는 방법. TEST vs TDD TEST : 구현 -> 테스트(검증) like 일기 TDD : 테스트(요구사항) -> 구현 + @ like TODO List BDD : 행위(요구사항) -> 구현 ATDD : 인수 테스트(요구사항) -> 인수 테스트 -> 구현 ...(요구사항) - User Story 1. 논의 - Discuss - 기획/개발/QA 함께 인수 조건 회의 참여 - ..
[IntelliJ] Spring, Maven, Tomcat Setting in Intranet (인트라넷 환경에서 설정) 인터넷이 연결되지 않은 or 인트라넷 PC에서 Spring + Maven + Tomcat Server Project 설정을 해보잣! 😎😆😁 필요 파일 크게 네 가지 정도의 파일이 필요하다. java Maven (Maven home) Maven Repository (Local Repository & Maven setting) tomcat server 프로젝트 준비 기존 프로젝트 사용 기존 Eclipse에서 사용하던 프로젝트를 그대로 사용할 경우, IntelliJ 빌드 과정에서 Eclipse에서 이미 생성된 클래스 파일과 충돌이 발생할 수 있다. /target 디렉터리를 삭제한 후 진행해..