DB를 조회할 때 종종 행과 열이 바뀌어서 조회가 필요한 경우가 있습니다. RDB(관계형 DB)는 행과 열로 이루어져 있는데, 이 위치를 뒤바꾸는 것을 피벗(Pivot)이라고 합니다. Oracle 11g 에서는 해당 기능을 오라클에서 제공하지만, MySQL/MariaDB 는 따로 제공을 하지 않습니다. 해당 글에서는 MySQL/MariaDB 에서 피벗 형식으로 조회가 되도록 간단하게 예제를 진행해보도록 하겠습니다. 0. 테이블 - 현재 테이블의 구조 및 데이터는 다음과 같습니다. student_table department_table 1. Pivot 사용 전 - 두 테이블을 조인하여 연도별, 학과별 입학 인원을 조회하려고 합니다. - 학과에 입학인원이 없더라도, 0명으로 조회되어야 때문에 Outer Jo..
이전 글에서 NoSQL 을 로컬환경에 설치하는 것을 알아보았고, 해당 글에서는 SpringBoot 에서 CouchBase 를 연동해서 간단하게 테스트를 진행해보고자 합니다. 1. 환경 세팅 1-1. build.gradle - CouchBase dependency 를 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-data-couchbase' 1-2. CouchBase 실행(Mac) - 이전 글에서 Docker 를 통해 설치한 CouchBase 를 실행합니다. docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase:community-7.1.1 - 만약 위 명령..
주말에 간단하게 공부를 하기 위해서 인텔리제이를 키고 진행하려 했는데, 프로젝트 빌드가 계속해서 실패를 하게 되었다. A problem occurred configuring root project 'demo'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-buildpack-platform:2.7.6. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:2.7.6 > org.springframework.boot:spring-boot-g..
이전 글에서 NoSQL 에 대해 정리해보았고, 이번 글에서는 NoSQL 중 CouchBase 에 대해 간단하게 알아보고 설치하는 방법을 정리해보고자 합니다. [DB] NoSQL DataBase 정리 회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사 dev-jwblog.tistory.com 1. CouchBase 정리 1-1. CouchBase 란? - Apache 의 CouchDB 를 기반으로 새롭게 만든 솔루션이다. - 카우치베이스 Server 라는 NoSQL 솔루션이다. - 고성능 NoSQL(비 관계형)으로 Key-Value 형태로 XML/JSON 를 저..
회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사용해보라고 하였습니다. 이번 글에서는 기존 RDB 와 다른 NoSQL 에 대해 정리해보고자 합니다. 1. NoSQL(Not Only SQL)이란? - NoSQL 은 비관계형 데이터베이스를 의미한다. - 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화되어있으며, 스키마 없이 사용 가능하거나 느슨한 스키마를 제공한다. - 기존의 관계형 DBMS 가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다. 2. NoSQL 특징 - NoSQL DB 는 기존의 관계형 데이터베이스(RD..
SpringBoot 로 개발을 하다 보면 클라이언트와 통신 중 데이터에 대해서 Validation(검증)이 필요한 경우가 있습니다. 검증 클래스를 별도로 생성하여 검증을 진행할 수 있지만 간단하게 어노테이션을 통해서 JSR 표준을 이용하여 검증도 가능합니다. 이번 글에서는 이 JSR 표준을 이용한 @Valid 어노테이션에 대해서 정리해보고자 합니다. 0. Dependency 추가 Gradle(build.gradle) implementation 'org.springframework.boot:spring-boot-starter-validation' Maven(pom.xml) // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-..
회사에서 서버간 간단한 데이터 전달로는 RabbitMQ를 사용하고 있었습니다. 최근 많은 회사에서 다양한 AMQP의 MQ 들을 사용하는데, 이번 글에서는 RabbitMQ 에 대해 정리해보고자 합니다. 1. RabbitMQ 란? - 서버간 메세지(데이터)를 전달해주는 오픈소스 메세지 브로커입니다. - 1:1 또는 1:N 등 메세지를 특정 사용자에게 전달하려고 할 때, RabbitMQ 가 메세지를 받아 알맞게 전달하는 역할을 합니다. - AMQP 프로토콜을 구현한 메세지 브로커입니다. Message Broker(메시지브로커) 및 Message Queue(메시지큐) 정리 이직을 한 지 6개월이 돼가면서, 새로운 경험도 하고 있고 기존에 아는 내용에 대해서도 조금 더 확실하게 이해할 수 있는 기간이었다고 생각한..
개발 도중 API 의 Request, Response 처리를 할 때나 다른 계층으로 데이터를 넘길 때 별도의 DTO 를 생성해야 하는 고민을 하기도 한다. 또한, 개발자마다 개발하는 과정에서 혹은 기존 소스에서 확인해보면 DTO 와 VO 는 다른 개념이지만 종종 같은 개념으로 사용하기도 합니다. 또한, Entity 와 DTO 도 한 클래스로 사용하기도 한다. 이것이 무조건? 틀렸다라곤 할 수는 없겠지만, 각각의 역할이 다르기 때문에 분리하여 각 역할에 맞게 사용하여야 하고 이것이 좋은 코드로 이어질 것이라고 생각한다. 이번 글에서는 각 Entity, DTO, VO 에 대해 정리를 해보고자 한다. 1. Entity - 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필..
이직을 한 지 6개월이 돼가면서, 새로운 경험도 하고 있고 기존에 아는 내용에 대해서도 조금 더 확실하게 이해할 수 있는 기간이었다고 생각한다. 그러면서 대부분 주말을 통해 공부를 (조금)하고 블로그를 작성하였는데, 7,8월에는 열심히 글을 쓰긴 했는데, 최근에는 연휴도 있으면서(= 노느라) 글을 많이 못 썼던 것 같다. 투덜 되는 게 길었고, 이번 글에서는 최근 들어 각 회사에서 사용되는 Message Broker, Message Queue 에 대해 정리해보고자 한다. 1. MOM(Message Oriented Middleware) - Message Broker 와 Message Queue 를 알아보기 전에, MOM(메시지 지향 미들웨어)를 간단하게 알아보겠습니다. - MOM 은 어플리케이션들의 메시지..
출근 하고 Slack 을 확인하니 배치에서 오류가 마구마구 올라오고 있었다. 확인해보니 OpenAPI 를 통해서 응답값을 받아 형변환(Casting) 하는 도중에 에러가 발생하였는데, OpenAPI 응답값 중 기존 Double 형으로 주던 데이터를 Integer 형으로 주면서 에러가 발생하였다. java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Double (java.lang.Integer and java.lang.Double are in module java.base of loader 'bootstrap') 1. 원인 - 간단하게 발생한 비슷한 코드는 아래와 같습니다. /** [{id=1, nam..