Spring/Spring DB

Spring/Spring DB

스프링 트랜잭션

트랜잭션 도입 시 문제점 애플리케이션 구조에는 여러 가지가 있지만 가장 단순하고 많이 사용되는 방법은 아래와 같이 3개의 계층으로 나누는 것이다. 프레젠테이션 계층 : UI 관련 처리 담당, UI 관련 기술에 종속적 서비스 계층 : 비즈니스 로직 담당, 특정 기술에 종속적이지 않고 가급적 자바 순수 코드로 작성 데이터 접근 계층 : DB 접근 담당, DB 기술에 종속적 이렇게 3개의 계층으로 나누는 이유는 애플리케이션에서 가장 중요한, 핵심 비즈니스 로직을 담고 있는 서비스 계층이 특정 기술에 종속되지 않도록, 순수 자바 코드로 구성된 비즈니스 로직만 들어가도록 하기 위함이다. 이럼으로써 시간이 지나 기술이 변해도 서비스 계층은 변경 없이 유지될 수 있으며 순수 비즈니스 로직만 있기에 유지보수도 쉬워지고..

Spring/Spring DB

트랜잭션

트랜잭션 트랜잭션은 DB가 수행하는 작업의 최소 단위이다. 즉 DB는 트랜잭션 단위로 작업을 수행한다. 트랜잭션에 대한 자세한 내용은 아래 글을 참고하자. https://gunjoon.tistory.com/96 [데이터베이스 - 7] 트랜잭션 회복과 동시성 제어 DBMS는 데이터베이스가 항상 정확하고 일관된 상태를 유지할 수 있도록 장애 발생 시 회복 기능과 동시성 제어 기능을 제공한다. 장애 발생 시 회복 기능을 통해, 여러 사용자 gunjoon.tistory.com DB 세션 클라이언트가 DB 서버와 커넥션을 맺게 되면 DB 서버는 세션을 만들고 커넥션을 통한 모든 요청은 생성된 세션을 통해 실행한다. 세션은 트랜잭션을 시작하고, 커밋 또는 롤백을 통해 트랜잭션을 종료한다. 그 후 새로운 트랜잭션을 ..

Spring/Spring DB

커넥션 풀

커넥션 풀의 필요성 JDBC로 DB에 접근하려면 먼저 커넥션(JDBC의 커넥션)을 획득해야한다. 커넥션을 새로 생성하는 과정은 아래와 같이 여러 작업이 수행되기에 많은 시간이 소모된다. DB에 접근할때마다 커넥션을 새로 생성한다면 아래의 두 가지 문제에 직면한다. 커넥션 생성에 시간이 소모되기에 요청에 대한 서버 응답 속도가 느려진다. 커넥션은 서버의 자원이다. 커넥션을 무한정 생성하면 서버의 자원이 고갈될 수 있다. 따라서 커넥션의 생성 개수를 제한해야 한다. 커넥션 풀을 사용한다면 위 두 가지 문제를 해결할 수 있다. 커넥션 풀 풀은 리소스를 보관하고 관리하는 공간이다. 풀에는 미리 생성된 리소스가 보관되어 있다. 애플리케이션은 풀에서 리소스를 가져와 사용하고 사용이 끝나면 풀에 반납한다. 즉 리소스..

Spring/Spring DB

JDBC

JDBC 애플리케이션에서 DB에 접근하기 위해 아래의 과정을 거친다. 첫 번째로 TCP/IP로 연결을 확립하고 두 번째로 DB 서버에 SQL을 전달한다. 마지막으로 DB 서버는 SQL 수행 결과를 응답한다. 이 과정을 위해 DB 사에서 전용 라이브러리를 제공하며 프로그래머는 해당 라이브러리로 위 과정을 구현한다. 하지만 DB의 종류는 무수히 많으며 DB에 따라 DB 접근 코드도 달라진다. DB 접근 코드를 바꾸지 않고도 DB를 바꿀 수 있는 방법이 없을까? 이를 위해 DB 접근 과정을 표준화한 JDBC가 등장했다. JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 즉 DB 접근 과정을 표준화한 인터페이스이다. 자바 개발자는 JDB..

gunjoon98
'Spring/Spring DB' 카테고리의 글 목록