[JDBC] 트랜잭션 이해
·
JDBC
기술스택Spring Boot 3.3.5Java 17H2 Database 1. 트랜잭션 개념 이해트랜잭션이란?데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. - 위키백과 데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까?가장 대표적인 이유는 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문이다.  트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 데이터 베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 즉, 데이터베이스에서 수행되는 일..
[JDBC] 커넥션풀과 데이터소스 이해
·
JDBC
기술스택Spring Boot 3.3.5Java 17H2 Database 1. 커넥션 풀 이해데이터베이스 커넥션을 획득할 때는 다음과 같은 복잡한 과정을 거친다.애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.DB 드라이버는 DB와 `TCP/IP ` 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 을 위한 네트워크 동작이 발생한다.DB 드라이버는 ` TCP/IP ` 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다.DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다.DB는 커넥션 생성이 완료되었다는 응답을 보낸다.DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많..
[JDBC] JDBC 이해
·
JDBC
기술 스택Spring Boot 3.3.5Java 17H2 Database 1. 프로젝트 생성https://start.spring.io/    https://www.h2database.com링크 접속 후 H2 Database 설치하자. 스프링 부트 3.X 사용하면 2.1.214 버전 이상을 사용해야 한다고 한다.  설치가 잘 완료되었으면 설치한 폴더에 들어가 cmd를 키고 "h2.bat"라는 명령어를 사용해 H2를 킨다.그리고 기본 테이블과 더미데이터 삽입.drop table member if exists cascade;create table member ( member_id varchar(10), money integer not null default 0, primary key (member_..
[Spring] Bean Validation (검증) - 2
·
Spring Framework
이전 포스팅:[Spring] Bean Validation (검증) - 1  [Spring] Bean Validation (검증) - 1해당 예제는 다음과 같은 기술 스택을 사용했습니다.JDK 11Spring BootThymeLeaf 1. Bean Validation이란?Bean Validation은 Java EE 환경에서 표준으로 제공되는 유효성 검증 프레임워크로, JSR-380(Bean Validation 2.0)eco-dev.tistory.com   Bean Validation의 한계와 해결책 문제점등록과 수정 시 검증 조건이 다를 수 있음하나의 도메인 객체에 모든 검증 로직을 담기 어려움해결책검증 그룹(groups) 사용: @Validated(SaveCheck.class)와 같이 그룹을 지정하여 상..
[Spring] Bean Validation (검증) - 1
·
Spring Framework
해당 예제는 다음과 같은 기술 스택을 사용했습니다.JDK 11Spring BootThymeLeaf 1. Bean Validation이란?Bean Validation은 Java EE 환경에서 표준으로 제공되는 유효성 검증 프레임워크로, JSR-380(Bean Validation 2.0) 표준에 따라 정의된다. 애노테이션 기반으로 도메인 모델의 필드에 유효성 검증 규칙을 선언하여 자동으로 검증을 수행할 수 있게 해준다. Spring Boot는 기본적으로 Hibernate Validator를 통합하여 Bean Validation을 지원한다. Hibernate Validator는 Bean Validation의 레퍼런스 구현체로, 다양한 유효성 검증 기능을 제공한다. Bean Validation은 다양한 유효성 ..
[Java] 백준 12865 (평범한 배낭) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/12865   알고리즘 분류다이나믹 프로그래밍배낭 문제 풀이대표적인 DP 알고리즘을 사용하는 배낭 문제이다.Bottom-UP 방식을 사용했고 DP의 SubProblem은 물건을 담을 때나 담지 않을 때를 생각했다. 예시는 백준에 나와있는 입출력을 기준으로 아래의 표와 함께 설명하겠다.  초기 상태 (행 0): DP 테이블의 첫 번째 행은 물건을 하나도 고려하지 않은 상태이다. 따라서 모든 값이 0으로 초기화되어 있다. 당연히 배낭의 무게가 얼마이든지 물건을 하나도 넣지 않으면 가치는 0이기 때문이다.물건 \ 무게01234567X00000000 물건 1 (무게 6, 가치 13) - 행 1:배낭의 무게가 1부터 5까지는 물건 1의 무게(6)를 담을 수..
[Spring] 스프링 메시지, 국제화
·
Spring Framework
기술 스택JDK 11.0.2Spring boot 2.4.4ThymeLeaf  메시지란?개요 만약 기획자가 화면에 보이는 문구가 마음에 들지 않는다고 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 여러 화면에 보이는 단어들을 모두 변경해야 한다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다. 개념 스프링 부트에서 제공하는 메시지 기능은 애플리케이션에서 텍스트 메시지를 별도의 파일로 관리하여 다양한 언어와 상황에 맞춰 텍스트를 쉽게 변경할 수 있게 한다. MessageSource라는 인터페이스를 통해 애플리케이션은 텍스트 메시지를 코드에 하드코딩하지 않고 별도의 메시지 파일에서 로드할 수 있다.  국제화란?개요 및 개념국제화 (i18n) 기능은 애플리케이션을 여러 언어..
[Spring] Argument Resolver 란?
·
Spring Framework
Spring MVC로 Web개발을 할 때 쿼리 파라미터 혹은 HTTP Body에 들어오는 값을 Controller 메소드의 매개변수로만 선언을 해도 자동으로 바인딩을 해준다. 이럴 때 왜, 어떻게 바인딩을 해주지? 라는 의문이 들 것이다. 이런 바인딩을 개발자가 아닌 자동으로 해주는 것이 바로 Argument Resolver이다.   1. Argument Resolver (HandlerMethodArgumentResolver)Argument Resolver는 컨트롤러 메서드의 매개변수에 값을 자동으로 주입하는 역할을 한다. 이는 HTTP 요청의 다양한 데이터를 컨트롤러 메서드의 인자로 전달하기 위해 사용된다. 예를 들어, 요청 파라미터, 헤더, 세션 정보 등을 컨트롤러의 인자에 맞게 변환하여 제공하는 작..
[Java] 백준 1262 (알파벳 다이아몬드) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1262  알고리즘 분류구현 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());..