분류 전체보기 513

순수 JPA와 Querydsl

동적 쿼리와 성능 최적화 조회 - Builder 먼저 회원 정보와 소속 팀 정보를 담는 DTO를 생성하고 @QueryProjection을 통해 QType 클래스를 만들어주었다. 찾고자하는 회원에 대한 조건이 여기에 담겨서 넘어올 것이다. QType의 DTO가 생성되었기 때문에 위와같이 바로 DTO로 조회를 한다. Querydsl의 BooleanBuilder를 사용해 위와 같이 조건을 설정해주고 위와 같이 Repository의 코드를 구현하였다. 회원 이름과 팀 이름이 조건과 같은, 나이는 AgeGoe

Spring/Querydsl 2021.08.30

8일차

RabbitMQ RabbitMQ는 오픈 소스 메시지 브로커로써 Kafka에 비해 가볍고 온프레미스 및 클라우드에 배포하기 쉬운 장점이 존재한다고 한다. 기본적으로 설치와 환경변수 설정을 완료하고 rabbitmq_management 플러그인을 설치한다. 그 후, localhost:15672로 접속해 기본 계정은 guest/guest로 로그인하면 아래와 같은 화면이 나온다. MQ, 메시지 큐란 무엇일까? 메시지 큐란 키보드나 마우스를 통해 발생하는 사용자의 입력을 메시지로 전달하는 윈도우즈 시스템에서 어떤 프로세스에 대한 메시지를 저장하기 위해 할당된 큐이다. 메시지 큐에서 해당 입력에 대응하는 메시지를 읽어서 처리한다. DB를 두지않고 중간에 broker를 구현하여 메시지를 처리하는 방식으로 동작한다. 여..

7일차

@WebMvcTest 이름 그대로 MVC를 위한 테스트이다. 테스트할 특정 컨트롤러 클래스르 명시하여 사용한다. WebApplication 관련된 Bean만 등록하므로 통합 테스트보다 가볍고 빠르다. 단순히 위와 같은 컨트롤러가 있을 때 사실 현재 예제에서 ItemService가 하는 것이 아무것도 없기 때문에 위와 같이 @BeforeEach로 setUp을 해주지 않아도 테스트는 통과한다. 테스트 코드를 보면 바로 이해가 갈 것이다. get방식으로 "/hello"로 접근했을 때 HTTP 상태코드가 ok(200)이고, content가 hello와 동일한지를 체크한다. 이외에 contentType을 확인할 수도, perform을 하면서 contentType을 미리 지정해줄 수도 있다. 컨트롤러로 들어오는 j..

6일차

목업 테스트 @SpringBootTest는 Loosly Coupled에 위반되는 사항이 많아서 @ExtendWith 애노테이션을 적용시키고 Mockito를 사용한 목업 테스트를 진행한다. @SpringBootTest는 통합 테스트시에 사용한다. 단위 테스트시에 사용하는 것은 좋지 않다. 단위 테스트 시에 사용할 때는 classes 옵션을 통해 딱 필요한 클래스(스프링 빈)만 가져와서 사용해야한다. 가짜 목 객체를 만들어준다.(@Mock) 그 후 생성자를 사용해 위와 같이 사용할 수 있는데 다른 예시를 살펴보자. 생성자 주입과 유사한 코드이다. @Mock private OrderRepository orderRepository @BeforeEach void setUp() { OrderService order..

일급 컬렉션

First Class Collection, 일급 컬렉션이란 무엇일까? Collection을 Wrapping 하면서, 그 외의 다른 멤버 변수가 없는 상태를 일급 컬렉션이라고한다. 이는 두 그룹을 같은 묶거나 그룹의 각 원소에 규칙을 적용하는 동작을 처리할 수 있다. 각설하고 일급 컬렉션을 예제 코드로 만들어보고 왜 일급 컬렉션을 사용해야하는지를 알아보자. List cars = new ArrayList(); Car 객체 인스턴스를 담는 cars라는 List를 생각해보자. 이를 일급 컬렉션으로 한번 감싸서 사용하면 아래와 같이 만들 수 있다. public class Cars { private final List cars; public Cars(List cars) { this.cars = cars; } } 이..

Java 2021.08.25

5일차

후.... 오늘 강의는 영상 소리가 진짜 아예 안들려서 설명을 아무것도 듣지못했다. 사실 거의 커리큘럼 상 거의 훑듯이 지나가기 때문에 소리 들려도 어차피 나혼자 키워드 잡고 따로 공부해야하는 건 마찬가지긴 하지만 ㅋㅋ 오늘은 그래서 아예 키워드만 잡고 혼자 공부하려함. Design Pattern @CrossOrigin 이 애노테이션에 대해 이야기하려면 먼저 CORS에 대해 알고넘어가야한다. CORS란 Cross-Origin Resource Sharing의 약자로써 추가적인 HTTP header를 사용해 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록하는 메커니즘을 뜻하는데 다른 origin에서 내 리소스에 접근하지 못하기 위해 사용된다. 여기서 origin(출처)가 뜻하는 의미는 다음과 같..

4일차

오늘은 MariaDB를 설치하고 Spring Boot와 연동한다. MariaDB를 설치하게되면 Heidisql이 자동으로 설치되는데 이는 mysql, mssql, mariadb를 통합적으로 관리할 수 있는 오픈소스 소프트웨어이다. 터미널에서 mariadb라는 database를 하나 create한 상태이다. 세션 관리자를 통해 새로운 세션을 열어 root 계정으로 로그인하였다. 여기서 만들어놓은 db를 관리할 수 있게 된다. MySQL, MariaDB의 프론트엔트 툴이라고 한다. mysql workbench와 비슷한 느낌의 툴인가? 사실 db에 데이터를 넣는 것은 jpa를 통해 진행하기 때문에 데이터가 정상 입력되었는지를 확인하는 용도로만 사용될 것 같다. "application.yml" 설정은 sprin..

[프로그래머스] 월간 코드 챌린지 시즌2 > 음양 더하기

문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 입출력 예 absolutessignsresult [4,7,12] [true,false,true] 9 [1,2,3] [false,false,..

[프로그래머스] 2021 카카오 인턴십 > 숫자 문자열과 영단어

https://programmers.co.kr/learn/courses/30/lessons/81301?language=python3 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203..

[프로그래머스] 2021 Dev-Matching > 로또의 최고 순위와 최저 순위

https://programmers.co.kr/learn/courses/30/lessons/77484?language=python3#fn1 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 ..

반응형