본문 바로가기

728x90

Spring Boot

(45)
[DB] JDBC Template 사용하기 이전 포스팅 에서 사용한 Repository 클래스에는 코드가 복잡합니다. 특히나 JDBC를 사용하고 있는데 아래와 같이 동일한 코드가 반복되어 사용되고 있습니다.커넥션 조회 및 커넥션 동기화PreparedStatement 생성 및 파라미터 바인딩쿼리 실행결과 바인딩예외 발생시 스프링 예외 변환기 실행리소스 종료스프링은 이런 반복 문제를 해결하기 위해 JdbcTemplate 이라는 템플릿을 제공합니다. 이 템플릿을 사용하여 코드를 수정하면 아래와 같이 깔끔하게 작성할 수 있습니다.package hello.jdbc.repository.Account;import hello.jdbc.domain.Account;import lombok.AllArgsConstructor;import lombok.extern.sl..
[DB] Spring 의 트랜잭션 추상화 (트랜잭션 매니저) 아래 코드는 서비스 클래스로, 트랜잭션을 사용하기 위해서 JDBC 기술에 의존하고 있습니다. 즉, JDBC에서 JPA  같은 다른 데이터 접근 기술로 변경하면 서비스 계층의 트랜잭션 관련 코드도 모두 함께 수정해야 하는 문제가 있습니다.package hello.jdbc.service;import hello.jdbc.domain.Account;import hello.jdbc.repository.Account.AccountRepository;import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;// JDBC 기술에 의존import javax.sql.DataSource;import java.sql.Connection;import java.sql...
[DB] 트랜잭션(Transaction) 이란? 데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 여러 가지 이유가 있지만, 가장 대표적인 것은 바로 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문입니다. 트랜잭션을 이름 그대로 번역하면 거래라는 뜻입니다. 즉, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 의미합니다. 예를 들어 A의 돈 10만원을 B에게 계좌이체 한다고 해 봅시다. 그럼 아래와 같이 동작해야 합니다. 1. A의 잔고를 10만원 감소2. B의 잔고를 10만원 증가 1번과 2번 작업은 하나의 작업처럼 동작해야 합니다. 만약 1번은 성공했는데 2번에서 문제가 발생하여 계좌이체에 실패하면 아주 큰 문제가 발생하겠죠. 데이터베이스의 트랜잭션 기능을 사용하면 1번과 2번이 둘 다..
[DB] JDBC 실습 (구현 및 테스트) 아래 포스팅에서 만든 H2 DataBase를 사용해서 실습을 진행할 예정입니다.https://silver-programmer.tistory.com/entry/JDBC%EB%9E%80 JDBC란?서버에서는 데이터를 데이터베이스에 저장하고 있습니다. 그리고 데이터베이스에는 MySQL, Oracle과 같이 다양한 종류가 있죠. 여기서 문제가 발생합니다. 첫째로, 특정 데이터베이스를 사용하다silver-programmer.tistory.com 테이블 생성 및 DTO 정의schema.sql아래처럼 task라는 테이블을 생성합니다. task 테이블의 필드는 task_id, category, priority로 구성했습니다.DROP TABLE IF EXISTS task CASCADE;CREATE TABLE task (..
[DB] JDBC란? 서버에서는 데이터를 데이터베이스에 저장하고 있습니다. 그리고 데이터베이스에는 MySQL, Oracle과 같이 다양한 종류가 있죠. 여기서 문제가 발생합니다. 첫째로, 특정 데이터베이스를 사용하다가 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함꼐 변경해야 합니다. 그리고, 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달,  그 결과를 응답받는 방법을 새로 학습해야 됩니다. 위와 같은 문제를 해결하기 위해 JDBC라는 자바 표준이 등장합니다. 위키 백과를 보면 JDBC를 아래와 같이 정의합니다.JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC 는 데이터베이스에서 자료를 쿼..
MVC 패턴 MVC 패턴이란? Model View Controller의 약자로, 디자인 패턴 중 하나입니다. MVC 패턴이 있기 전에는 하나의 서블릿이나 JSP에서 어떤 애플리케이션의 모든 기능들을 구현하고 처리하였습니다. 이렇게 분리할 수 있는 기능들도 다 같은 곳에서 처리하다 보니, 유지보수 하기에 어려움이 있었습니다. 이렇게 서블릿이나 JSP로 처리하던 것을 모델(Model), 뷰(View), 컨트롤러(Controller)라는 영역으로 서로 역할을 나눈 것이 MVC 패턴입니다. 웹 애플리케이션은 보통 이 MVC 패턴을 주로 사용합니다. Controller : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행 혹은 호출합ㄴ다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담습니다. Model..
서블릿(Servlet) 이란? - 2 (HttpServletRequest, HttpServletResponse) HttpServletRequest와 HttpServletResponse 모두 서블릿(Servlet)이 Http 요청 및 응답 메시지를 간편하게 파싱하고 구성할 수 있도록 사용하는 객체입니다. 서블릿 관련한 기본 내용은 아래 포스팅에 작성하였으니 참고해 주세요! 서블릿(Servlet) 이란? 서블릿은 웹 서버를 구현할 때 필요한 TCP/IP 연결, HTTP 메시지 파싱, HTML 생성 등의 역할을 대신해주어 개발자가 비즈니스 로직에만 집중할 수 있도록 해줍니다. 서블릿은 아래와 같이 생겼습니다 silver-programmer.tistory.com HttpServletRequest HttpServletRequest를 사용하면 아래와 같이 개발자가 HTTP 요청 메시지를 편리하게 조회할 수 있습니다. POST..
서블릿(Servlet) 이란? 서블릿은 웹 서버를 구현할 때 필요한 TCP/IP 연결, HTTP 메시지 파싱, HTML 생성 등의 역할을 대신해주어 개발자가 비즈니스 로직에만 집중할 수 있도록 해줍니다. 서블릿은 아래와 같이 생겼습니다. urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행됩니다. HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServetRequest 서블릿이 개발자를 위해 HTTP 요청 메시지를 직접 파싱하여 HttpServletRequest 객체에 담아서 제공 HTTP 응답 정보를 편리하게 사용할 수 있는 HttpServetResponse 개발자가 설정한 스펙에 맞게 서블릿이 HTTP 응답 메시지 직접 구성하여 HttpServletResponse 객체에 담아서 제공 서블릿은 HTTP 요..

728x90
반응형