[JDBC] 스프링과 문제 해결 - 예외 처리, 반복
·
JDBC
기술스택Spring Boot 3.3.5Java 17H2 Database 1. 체크 예외와 인터페이스서비스 계층은 가급적 특정 구현 기술에 의존하지 않고 순수하게 유지하는 것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야 한다. 서비스가 처리할 수 없는 SQLException에 대한 의존을 제거하려면 어떻게 해야할까?바로 SQLException 체크 예외를 RuntimeException 언체크 예외로 전환해서 서비스 계층에 던지면 서비스 계층이 해당 예외를 무시할 수 있기 때문에 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 인터페이스 도입이렇게 인터페이스를 도입하면 MemberService는 MemberRepository 인터페이스에만 의존하면 된다. Me..
[JDBC] 자바 예외 이해
·
JDBC
1. 예외 계층스프링이 제공하는 예외 추상화를 이해하기 위해서는 먼저 자바 기본 예외에 대한 이해가 필요하다. 예외 계층Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리 케이션 개발자는 이 예외를 잡으려고 해서는 안된다.Exception: 체크예외애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException은 체크 예외가 아니다.RuntimeException: 언체크예외컴파일러가 체크하지 않는 언체크 예외이다.RuntimeException과 그 자식 예외는 모두 언체크 예외이다.2. 예외 기본 규칙예외는 폭탄돌리기와 같다. 잡아서 처..
[JDBC] 트랜잭션 - 스프링과 문제 해결
·
JDBC
기술스택Spring Boot 3.3.5Java 17H2 Database1. 개요문제점전 포스팅에 만들었던 코드를 보자. 전체 내용은 여기 를 클릭하면 된다.MemberServiceV2.java@Slf4j@RequiredArgsConstructorpublic class MemberServiceV2 { private final DataSource dataSource; private final MemberRepositoryV2 memberRepository; public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnec..
[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_..