본문 바로가기

전체 글110

DB를 사용하는 Repository 구성 1 세 줄 요약- DB를 사용하기 위해선 스키마 및 테이블을 생성해야 한다.- ApplicationRunner를 빈으로 등록해 어플리케이션 시작과 함께 커넥션 풀을 초기화한다.- JdbcTemplate를 통해 쿼리문의 매개변수와 인스턴스 필드들을 매핑시킨다.  스키마 및 테이블 구성 상품관리 어플리케이션에 사용되는 ProductDatabaseRepository에 관한 예제입니다. DB 컨테이너는 지난 게시글에서 생성한 'some-mysql' 컨테이너를 사용합니다. 스키마(SCHEMA) 생성도커 데스크탑 실행 후 bash 쉘에 접속해 아래와 같이 입력해 스키마를 생성합니다. bash 쉘은 명령 프롬프트에서 접속해도 되지만, 간편하게 도커 데스크탑에서 바로 접속할 수 있습니다.  CREATE SCHEMA pro.. 2024. 5. 3.
도커(Docker)로 MySQL 컨테이너 띄우기 세 줄 요약- 도커 데스크탑을 통해 손쉽게 도커 컨테이너를 관리할 수 있다.- WSL2에 도커 엔진을 설치하면 도커 CLI 클라이언트를 통해 도커 데스크탑 없이도 컨테이너를 생성할 수 있다.- 도커 컨테이너는 리눅스 환경에서 동작되기 때문에 bash 쉘을 통해 명령어를 입력한다.  도커 데스크탑과 도커 엔진 도커 데스크탑(Docker Desktop)도커 데스크탑은 각 OS 환경에서 컨테이너화된(containerized) 어플리케이션을 구축하고 공유할 수 있도록 해줍니다.GUI를 함께 제공해 한 번의 클릭으로 보다 쉽게 컨테이너, 어플리케이션, 이미지 등을 설치하고 관리할 수 있습니다.   포함 요소도커 데스크탑에는 아래와 같은 요소들이 포함되어 있습니다.Docker EngineDocker CLI clie.. 2024. 5. 1.
예제로 알아보는 도커(Docker) 세 줄 요약- 도커는 리눅스 가상환경 기반의 컨테이너를 통해 서버를 구성하는 요소들에 대한 실행환경을 독립적으로 구성한다.- 도커 허브(클라우드)는 각 요소들을 리눅스 컴퓨터에 설치된 모습인 이미지의 형태로 제공한다.- 도커파일과 compose 파일을 통해 서버환경을 보다 쉽게 개발환경과 동일하게 구성할 수 있다.  Doker? Docker도커는 리눅스(Linux) 가상환경 형태에서 돌아가는 '컨테이너(Container)'를 통해 개발의 편의성을 제공합니다.서버를 구성하는 요소들(언어, DB, 웹서버 등)이 '도커 허브(Docker Hub)'에서 '이미지(Image)' 형태로 제공됩니다.  → 여기서 이미지란 리눅스 컴퓨터의 특정 상태를 캡처해서 박제해둔 것을 의미합니다.  → 예를 들어 node 이미지.. 2024. 4. 29.
전역 예외 핸들러와 예외 처리 전략 (@ControllerAdvice, @ExceptionHandler) 세 줄 요약- 전역 예외 핸들러를 통해 예외 처리 코드에 대한 유지 보수성 및 기존 코드에 대한 가독성을 높일 수 있다.- @ControllerAdvice 및 @ExeptionHandler 어노테이션을 통해 동일한 예외를 전역적으로 처리할 수 있다.- 사용자 예외를 정의할 땐 RuntimeException을 상속받아 Unchecked Exception으로 만든다.  전역 예외 핸들러 지난 포스팅에서 500 Internal Server Error를 400 Bad Request로 변환해야 한다고 했습니다.전역 예외 핸들러를 이용하면 응답 변환과 더불어 예외 발생시 클라이언트에게 유용한 정보를 함께 제공할 수 있습니다. 전역 예외 핸들러예외 처리에 관한 내용을 모아둔 클래스를 의미합니다.전역 예외 핸들러를 사.. 2024. 4. 26.
@Valid, @Validated 세 줄 요약- 도메인 지식은 도메인 클래스 내부에서 머물러야 한다.- 컨트롤러에서 매개변수에 대한 유효성 검사는 @Valid를 통해 진행한다.- 클래스에 @Validated를 선언하면 컨트롤러 외에도 모든 계층에서 유효성 검사를 진행할 수 있다.  Bean Validation Validation(유효성 검사)데이터가 스펙(요구사항)에 맞는지 확인하는 작업을 의미합니다.  Bean ValidationJSR(Java Specification Requests)-303(or 308) 이라는 스펙을 사용하여 유효성을 검사하는 행위를 의미합니다.해당 스펙을 만족하는 대표적인 구현체로 'Hibernate Validator'가 있습니다.스프링에선 'Spring Boot Starter Validation'을 제공하며, .. 2024. 4. 25.
super, super() 세 줄 요약- super : 부모 클래스로부터 상속받은 필드나 메소드를 사용하기 위한 참조변수- super() : 부모 클래스로부터 상속받은 필드의 값을 초기화 해주는 메소드(= 생성자 역할)- super() 메소드는 자동으로 추가되나, 부모 클래스에 매개변수를 갖는 생성자가 있는 경우 기본 생성자를 추가해줘야 함  super? supersuper 키워드는 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는데 사용하는 참조 변수입니다.  this와 super인스턴스 필드와 지역 변수의 이름이 같을 때 this 키워드로 인스턴스 필드임을 구분했습니다.class Parent { int a; public Parent(int a) { .. 2024. 4. 24.
합승 택시 요금(Lv.3) 문제 설명 입출력 예시 요약 모든 지점을 하차지점으로 생각했을 때 각 지점에서 출발점(S), A, B 까지의 거리 중 최소값 구하기 풀이 접근 방식 1. 최소 비용 구하기 → 간선의 가중치가 1이 아니기 때문에 다익스트라 알고리즘을 통해 최소 비용 구하기 2. 하차지점 설정 → 합승을 했다면 반드시 하차지점이 생기고, 하차지점으로 부터 출발점, A도착점, B도착점까지의 거리를 계산한다. → 하차지점은 출발점(S)~하차지점, 하차지점~A, 하차지점~B 세 구간을 더한 값이 최소가 되는 노드로 설정한다. → 하차지점을 구하기 위해 모든 노드에 대해서 다익스트라 알고리즘을 실행한다. 코드리뷰 import java.util.*; // 인접 노드 번호와 간선의 가중치를 저장하기 위한 객체 클래스 class Nod.. 2024. 4. 16.
거리두기 확인하기(Lv.2) 문제 설명 입출력 예시 요약 대기실별로 맨해튼 거리가 2 이하인 응시자가 있는지 확인(단, 파티션이 막고 있는 경우 제외) 풀이 접근 방식 1. 응시자들의 맨해튼 거리가 1인 경우 → false 리턴 2. 응시자들의 맨해튼 거리가 2인 경우 → 같은 방향으로 두 칸 떨어져 있는 경우 응시자들 사이에 빈 공간(O)이 있다면 false → 대각선으로 떨어져 있는 경우 응시자의 (위쪽, 왼쪽) / (위쪽, 오른쪽) / (아래쪽, 왼쪽) / (아래쪽, 오른쪽) 위치에 빈 공간(O)이 있다면 false 코드리뷰 import java.util.*; class Solution { int N, M; String[][] maps; // 상하좌우 한 칸씩 탐색을 위한 배열 int[] dirY1 = {-1, 1, 0, 0}.. 2024. 4. 16.