목록전체 글 (50)
코딩블로그
에휴..보이시나요 이 중복되고 드러운 코드 구조를? public void incrementPositiveCineMaster(Popcorn popcorn) { popcornQueryRepository.incrementPositiveCineMaster(popcorn); } public void incrementPositiveGreatFilming(Popcorn popcorn) { popcornQueryRepository.incrementPositiveGreatFilming(popcorn); } public void incrementPositivePom(Popcorn popcorn) { popcornQueryRepository.incrementP..
프로젝트 진행 중, 시작일과 종료일을 Embedded 객체로 따로 빼서 VO로 처리하는 코드를 짜보았따. 이 과정에서 VO의 정의 , 사용 이유 그리고 사용법에 대해 배울 수 있었다. VO의 의미도메인(엔티티)에서 한 개 또는 그 이상의 속성들을 묶어 특정 값을 나타내는 객체를 의미한다 VO 사용 이유int, String과 같은 primitive 타입이 도메인 객체를 모델링하기 위해 충분하지 않다.객체가 primitive 타입의 기능들을 전부 사용하지 않는다유효성 검사 코드를 객체에 중복되는 부분들이 존재하는 모든 객체에서 검사 코드를 진행해야 할 것이다 VO 사용 시 제약 조건불변성Setter와 가변 로직이 없는 불변 상태여야 한다동등성값이 같다면 동등한 객체로 판단해야 한다 주소가 달라도 값이 같다..
필자는 spring mvc 즉, spring boot web만 사용해 보았다.졸업프로젝트는 실시간으로 open api에서 데이터 받아오는 것과 데이터 업데이트가 "실시간"으로 되어야 하는 것이 중요하기 때문에, Reactive Programming이 적합할 것 같아 Spring Webflux를 도입해 보았다. Webflux에 대한 정리글을 따로 정리해 두었으니 참고하고 싶으면 이 링크를 들어가서 살펴보는 것을 추천한다https://hanbxx.tistory.com/63 [Mobi] Spring Reactive Web이란? Reactive Programming & WebfluxMobi는 서울시 실시간 도시 데이터의 데이터를 가져오는 것이 중요한 프로젝트이기에 과거의 프로젝트 경험을 통해 사용성을 더 높..
커넥션 풀 이해애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가 정보를 DB에 전달한다DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB세션을 생성DB는 커넥션 생성이 완료되었다는 응답을 보낸다 DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환이러한 과정처럼 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많이 소모된다.고객이 애플리케이션을 사용할 때, SQL을 실행하는 시간 뿐만 아니라 커넥션을 새로 만드는 시간이 추가 되기 때문에 결과적으로 응답 속도에 영..
JDBC 이해JDBC 등장 이유우리가 애플리케이션을 개발할 때 데이터를 대부분 데이터베이스에 보관한다.클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해 데이터베이스를 사용한다 애플리케이션 서버와 DB - 일반적인 사용법1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다2. SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다3. 결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다 일반적인 사용법의 치명적인 문제점이 있다. - 바로 DB변경 시 2가지 큰 문제가 발생한다각각의 데이터베이스마다 커넥션을 방법, SQL을 전달하는 방..
https://www.acmicpc.net/problem/20207 풀이 1번 : 사각형 면적 구하기 import java.util.*;import java.lang.*;import java.io.*;// The main method must be in a class named "Main".class Main { public static int[][] arr; public static int N; public static class Pair { int start, end; public Pair(int start, int end) { this.start = start; this.end = end; } } ..
Mobi는 서울시 실시간 도시 데이터의 데이터를 가져오는 것이 중요한 프로젝트이기에 과거의 프로젝트 경험을 통해 사용성을 더 높이기 위해 Spring MVC의 @Async말고 Webflux를 사용하기로 하였다.사용하기 전에 Webflux에 대한 이해가 필요한 것 같아 정리해 보려고 한다. - 낮은 지연시간과 처리율이 높은 작업량을 개선시키기 위해 Sprng webflux를 사용한다- 개발자들에게 비동기적이고 non-blocking 애플리케이션을 만들 수 있다. Reactive Programming이란?- 인터넷 전체에서 모든 사용자가 Big Data를 사용하는 데에 있어서 millisecond의 반응 속도로, 시스템 일부가 망가져도 동작하고, 시스템 자원은 신축성이 있게 운영되고, 데이터를 주고 받는 ..
이미 진행이 된 프로젝트에 합류를 하다 보니 코드 컨벤션 맞추어서 해야하는데 오랜만에 팀 프로젝트로 진행하다 보니 컨벤션 실수도 하고 새로 알게 된 점들도 있다. 그중에서 Spotless이라는 플러그인을 알게 되었는데, 테스트 코드의 컨벤션을 지킬 수 있게 도와준다. 나름 유용할 것 같아서 팝콘메이트에도 적용을 해보았다. (과거에 한창 프론트엔드 할 때 VSCode의 prettier 플러그인을 애용했는데 스프링 부트에서도 비슷한 플러그인을 제공해준다니!!) Spotless란? Junit5에서 컨벤션을 지키고 쉽게 유지보수하기 위해 사용하는 플러그인이다 메인 루트의 Build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.1' ..