JaeWon's Devlog
article thumbnail
[ERROR] Could not resolve all files for configuration ':classpath'. 에러 해결(With. Gradle Build)
Error 2022. 11. 26. 16:46

주말에 간단하게 공부를 하기 위해서 인텔리제이를 키고 진행하려 했는데, 프로젝트 빌드가 계속해서 실패를 하게 되었다. 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..

article thumbnail
[DB] CouchBase 설치하기(With. Intel Mac)
BackEnd/DataBase 2022. 11. 13. 17:39

이전 글에서 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 를 저..

article thumbnail
[DB] NoSQL DataBase 정리
BackEnd/DataBase 2022. 11. 12. 16:13

회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사용해보라고 하였습니다. 이번 글에서는 기존 RDB 와 다른 NoSQL 에 대해 정리해보고자 합니다. 1. NoSQL(Not Only SQL)이란? - NoSQL 은 비관계형 데이터베이스를 의미한다. - 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화되어있으며, 스키마 없이 사용 가능하거나 느슨한 스키마를 제공한다. - 기존의 관계형 DBMS 가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다. 2. NoSQL 특징 - NoSQL DB 는 기존의 관계형 데이터베이스(RD..

article thumbnail
[SpringBoot] @Valid 를 이용한 유효성(Validation) 검사(Feat. @RequestBody, @Validated)
BackEnd/Spring 2022. 10. 29. 12:43

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-..

article thumbnail
RabbitMQ 정리
Tool, 이론 및 기타 2022. 10. 22. 16:00

회사에서 서버간 간단한 데이터 전달로는 RabbitMQ를 사용하고 있었습니다. 최근 많은 회사에서 다양한 AMQP의 MQ 들을 사용하는데, 이번 글에서는 RabbitMQ 에 대해 정리해보고자 합니다. 1. RabbitMQ 란? - 서버간 메세지(데이터)를 전달해주는 오픈소스 메세지 브로커입니다. - 1:1 또는 1:N 등 메세지를 특정 사용자에게 전달하려고 할 때, RabbitMQ 가 메세지를 받아 알맞게 전달하는 역할을 합니다. - AMQP 프로토콜을 구현한 메세지 브로커입니다. Message Broker(메시지브로커) 및 Message Queue(메시지큐) 정리 이직을 한 지 6개월이 돼가면서, 새로운 경험도 하고 있고 기존에 아는 내용에 대해서도 조금 더 확실하게 이해할 수 있는 기간이었다고 생각한..

article thumbnail
Entity vs DTO vs VO 개념 및 차이점 정리(with. 역할 분리)
Tool, 이론 및 기타/이론 2022. 10. 18. 11:21

개발 도중 API 의 Request, Response 처리를 할 때나 다른 계층으로 데이터를 넘길 때 별도의 DTO 를 생성해야 하는 고민을 하기도 한다. 또한, 개발자마다 개발하는 과정에서 혹은 기존 소스에서 확인해보면 DTO 와 VO 는 다른 개념이지만 종종 같은 개념으로 사용하기도 합니다. 또한, Entity 와 DTO 도 한 클래스로 사용하기도 한다. 이것이 무조건? 틀렸다라곤 할 수는 없겠지만, 각각의 역할이 다르기 때문에 분리하여 각 역할에 맞게 사용하여야 하고 이것이 좋은 코드로 이어질 것이라고 생각한다. 이번 글에서는 각 Entity, DTO, VO 에 대해 정리를 해보고자 한다. 1. Entity - 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필..

article thumbnail
Message Broker(메시지브로커) 및 Message Queue(메시지큐) 정리
Tool, 이론 및 기타/이론 2022. 10. 14. 18:10

이직을 한 지 6개월이 돼가면서, 새로운 경험도 하고 있고 기존에 아는 내용에 대해서도 조금 더 확실하게 이해할 수 있는 기간이었다고 생각한다. 그러면서 대부분 주말을 통해 공부를 (조금)하고 블로그를 작성하였는데, 7,8월에는 열심히 글을 쓰긴 했는데, 최근에는 연휴도 있으면서(= 노느라) 글을 많이 못 썼던 것 같다. 투덜 되는 게 길었고, 이번 글에서는 최근 들어 각 회사에서 사용되는 Message Broker, Message Queue 에 대해 정리해보고자 한다. 1. MOM(Message Oriented Middleware) - Message Broker 와 Message Queue 를 알아보기 전에, MOM(메시지 지향 미들웨어)를 간단하게 알아보겠습니다. - MOM 은 어플리케이션들의 메시지..

article thumbnail
[Error] java.lang.ClassCastException 해결법
Error 2022. 10. 4. 13:35

출근 하고 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..

article thumbnail
[Error] MethodArgumentTypeMismatchException(with. Postman)
Error 2022. 9. 29. 09:56

API 를 개발하고 PostMan 으로 확인하는 도중 아래와 같은 에러로 테스트가 되지 못 하였다. { "timestamp": "2022-09-28T09:23:35.655+00:00", "status": 400, "error": "Bad Request", "trace": "org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to ... "message": "Failed to convert value of type 'java.lang.String' to required type 'java.lang.Boolean'; nested ..

article thumbnail
MyBatis(마이바티스)에서 사용하는 WHERE 1=1 의 위험성 및 예방(Feat. 장애)
BackEnd 2022. 9. 18. 17:56

최근 회사에서 운영서버에 반영하던 도중 큰 장애가 발생할 뻔한 일이 있었습니다. 해당 프로젝트에서는 MyBatis 를 사용하고, Dynamic Query 를 같이 사용하면서 WHERE 절에 모두 if 태그를 사용하여 파라미터를 확인하고 있었습니다.(물론 Java 단에서도 파라미터 Validation Check 를 하고는 있었습니다) 발생한 원인은 반영 소스 중에 분기를 타면서 알맞게 Parameter 를 세팅하여 DB 를 조회하여 해당 데이터들을 삭제하는 로직이었는데, 실수로 if 문 바깥에 DB 를 조회하는 메소드가 선언되었고, Parameter 도 하나도 세팅 안되게 되었습니다. 그로 인해, WHERE 절에서 모두 null 로 세팅이 되면서 전체 조회가 되었고, 해당 데이터들을 삭제하는 로직을 타는 ..