본문 바로가기

전체 글

(119)
[JDBC] Connection에 대한 고찰 자바 애플리케이션 서버와 DB 서버와의 연결을 위해 JDBC Driver로부터 Connection 구현체를 반환받는다. 과면 이 구현체는 무엇이며, 어떠한 연결인지 알아보고자하였다. 아래의 내용부터는 연결이 성립되는 과정을 순차적으로 작성하였다.애플리케이션 서버와 DB 서버의 통신과 연결JDBC ConnectionJava 애플리케이션에서 여러 DB간의 접근을 위하여, JDBC 라이브러리는 Driver 인터페이스를 제공한다. 그리고 DB 벤더사들은 Driver 구현체를 라이브러리에 내포시켜 제공한다. 다음은 H2 라이브러리의 Driver 구현체 코드이다.package org.h2;public class Driver implements java.sql.Driver, JdbcDriverBackwardsComp..
전반적인 Spring 생태계 이해 (8) - 통합 테스트 (Integration Test) 전반적인 Spring 생태계 이해 (7) - JDBC Template를 통한 중복 제거 글에서 순수 JDBC 사용에 이어서 JDBC Template을 사용하여 중복을 제거하였다. 이제 자바 애플리케이션에서 DB 접근 로직까지 작성을 완료했으므로, 애플리케이션과 DB까지 연동하여 테스트를 수행하는 통합 테스트 (Integration Test)을 해볼것이다.Integration Test란?일반적으로 통합 테스트(Integration Test)는 애플리케이션과 DB까지 연동하여 테스트를 수행하는 것을 말한다. 스프링 기반의 애플리케이션에서 통합 테스트는 스프링 IoC 컨테이너를 로드해서 애플리케이션과 DB 연동까지 테스트를 하는 것을 의미한다. 스프링 부트를 사용하여 통합 테스트를 수행하면, 테스트 환경에서 ..
전반적인 Spring 생태계 이해 (7) - JDBC Template를 통한 중복 제거 전반적인 Spring 생태계 이해 (6) - JDBC를 통한 DB 접근 로직 구현 글에서 JDBC를 사용하여 DB 접근 로직을 작성하였다. 하지만 반복되는 중복 코드로 인해 생산성이 떨어졌다. 이를 해결하기 위해 JDBC Template 라이브러리를 도입해보도록한다. JDBC Template는 실무에서도 많이 쓰인다고 한다. 참고로 JDBC Template은 Mybatis와 비슷한 라이브러리라고 한다.JDBC Template위에서 순수 JDBC로 DB 변경 작업을 하였을때, JDBC API 호출 코드에서 반복적인 코드를 제거해준다. 메서드마다 Connection, PreparedStatement, ResultSet, close()을 사용한 코드가 반복적으로 작성했었는데, 스프링 프레임워크에서 제공하는 J..
[Java] 템플릿 메서드 패턴(Template Method Pattern) 템플릿과 템플릿 메서드 패턴템플릿이란, 정해진 폼 혹은 틀이란 뜻이다. 템플릿 메서드 패턴은 반복적인 로직을 제거하기 위해, 중복된 로직(알고리즘)을 템플릿화 시켜서 템플릿 클래스로 만든다. 그리하여 이 템플릿 클래스만 사용하면 중복을 제거할 수 있도록하는 것이다. 템플릿 클래스에 여러 메서드르의 조합(알고리즘)을 템플릿화 시켜서 템플릿 메서드로 만든다. 템플릿 메서드의 내부 메서드들 중에서 어디서나 동일하게 쓰이는 메서드는 구현을 하고, 경우에 따라 다른 로직을 구현해야되는 메서드는 추상 메서드로 정의하여서 하위 클래스에서 구현하도록한다. 그리하여 템플릿 클래스도 추상 클래스로 정의한다.템플릿 메서드 패턴의 예제주문 프로세스에서 상품을 선택하는 로직, 상품을 배송하는 로직, 상품을 결제하는 로직이 존재..
전반적인 Spring 생태계 이해 (6) - JDBC를 통한 DB 접근 로직 구현 전반적인 Spring 생태계 이해 (5) - DB 접근과 JDBC 글에서 java 애플케이션 서버에서 DB 서버로의 접근에 대한 중요 내용을 다루었다. 이제는 JDBC를 사용하여 웹 애플레케이션 계층의 Reposotiory에서 DB 접근 로직을 작성할 것이다. 그 다음 기존의 메모리 용 Repository를 사용했던것을 실제 DB용 Repository로 객체를 변경을 한다.H2 데이터베이스 설치간단한 데이터베이스 작업을 위해, 자바로 개발된 경량화 관계형 데이터베이스 관리 시스템(RDBMS)인 H2 데이터베이스를 설치한다. 그리하여 H2 데이터베이스는 실무에서도 로컬에서 실행시켜볼때 쓰이곤한다.H2 데이터베이스 설치 가이드h2 다운로드 링크: https://www.h2database.com스프링 부트 3..
전반적인 Spring 생태계 이해 (5) - DB 접근과 JDBC 전반적인 Spring 생태계 이해 (4) - 웹 MVC 글에서 웹 애플레케이션 계층의 모든 클래스를 구현했다. 다음으로 기존으 메모리 저장용 Reposotiory에서 실제 DB 접근 로직을 작성하기 위해, java 애플케이션 서버에서 DB 서버로의 접근에 대한 중요 내용을 다루었다.여러 종류의 데이터베이스 접근에 따른 문제점과 해결클라이언트(애플리케이션 서버)에서 데이터베이스 서버와의 상호작용하는 기능은 크게 3가지로 나뉜다.애플리케이션 서버가 DB 서버로부터 연결된다.애플리케이션 서버가 DB 서버로 SQL문을 전달하고 DB 서버는 SQL문을 수행한 결과를 애플리케이션 서버에게 응답한다.애플리케이션 서버가 DB 서버로부터 연결 끊는다.따라서 위의 기능을 하는 3가지 메서드가 필요할 것이다. 이러한 메서드..
전반적인 Spring 생태계 이해 (4) - 웹 MVC 전반적인 Spring 생태계 이해 (3) - Spring Bean 등록에서 스프링 기반의 웹 애플리케이션의 계층에서 Service, Repostory 계층 구현에 이은 스프링 빈 설정까지 해주었다. 이 글에서는 이어서 웹 MVC(Model-View-Controller)를 구현을 진행한다. Spring 웹 개발 방식 (Static Content, MVC, API) 글의 Static Content와 MVC 내용과도 연관되어 있다.회원 웹 기능회원을 등록하고 조회할 수 있는 웹사이트를 만들기 위해, 먼저 웹사이트에 접속하면 홈 화면을 반환하는 기능을 만들도록한다.다음은 웹사이트에 접속하면 home 화면을 제공하기 위한 코드이다.@Controller public class HomeController { ..
전반적인 Spring 생태계 이해 (3) - Spring Bean 등록 전반적인 Spring 생태계 이해 (1) - 웹 애플리케이션 계층과 전반적인 Spring 생태계 이해 (2) - 유닛 테스트(Unit Test)에 이어서, 스프링 기반의 웹 애플리케이션에서 각 계층에 해당하는 객체를 생성하고 의존관계를 설정하는 스프링 빈(Spring Bean) 등록 방식에 대해서 작성한 글이다.Spring Bean 등록스프링 기반의 애플리케이션 계층 구조에서 컨트롤러(Controoler)는 서비스(Service)에게 서비스를 제공받아 요청을 처리하고, 서비스는 리포지토리(Repository)로부터 데이터 처리를 통하여 비지니스 로직을 수행을 할수 있다. 그러므로 아래와 같은 객체의 의존 관계가 형성된다.  위와 같이 각 계층 구조를 형성하도록, 각 계층의 객체를 생성하고 의존 관계를 설..