이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다 JdbcTemplate 소개와 설정 SQL을 직접 사용하는 경우, 스프링이 제공하는 JdbcTemplate을 사용하는 것은 좋은 방법이다. JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있도록 도와준다. JDBC 장점 설정이 간편함 별도의 복잡한 설정 없이 바로 사용할 수 있다. (아래 설정 참고) 반복문제 해결 JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 처리해준다. 개발자는 SQL을 작성하고, 전달할 파라미터 정의 + 응답 값 매핑만 하면 됨. 아래 반복 작업을 대신해줌. 커넥션 획득 statement를 준비하고 실행 결과를 반복하도록 루프를 실행 Conneti..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. JDBC 기술은 반복을 부른다. 앞서 여러 추상화 과정들을 통해 코드를 개선해나가는 작업을 해왔다. 그렇지만 아직까지 개선의 여지가 있는 부분이 남아있다. 아래 코드를 한번 살펴보자. @Override public Member findById(String memberId){ String sql = "select * from member where member_id = ?"; PreparedStatement pstmt = null; ResultSet rs = null; try { Connection conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, memb..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 직접 만든 데이터 계층 예외의 문제점 앞선 포스팅에서 DB에서 발생하는 예외들 중 원하는 예외만 서비스 계층에서 잡아서 처리할 수 있도록 사용자 정의 예외를 만들었다. 그렇지만 이 때 한 가지 문제점이 발생한다. 처리하고 싶은 DB 예외를 만들기 위해서는 각 DB에서 발생하는 예외들을 예외 변환 처리를 해줘야한다. 데이터 접근 계층이 수백개가 되면 이것은 아주 큰 문제로 다가온다. 따라서 이 부분의 해결이 필요해진다. 스프링 데이터 접근 예외 계층 스프링은 이미 데이터 접근 예외 계층을 추상화해서 제공해준다. 따라서 개발자는 해당 예외 계층을 사용하기만 하면 된다. 스프링은 데이터 접근 계층에 대한 수많은 예외를 정리해서 일관된 예외 계층을 제..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 데이터 접근 예외 직접 만들기 앞선 게시글에서는 DB를 접근하면서 발생할 수 있는 체크 예외를 런타임 예외로 감싸는 방법으로 서비스 계층으로 DB 예외가 누수되는 것을 방지했다. 그렇지만 DB 계층에서 발생할 수 있는 특정 예외들 중 일부는 서비스 계층에서 복구 시도를 해볼 수 있다. 예를 들어 회원 가입 시, DB에 이미 같은 ID가 있어 유니크 제약 조건에 걸려서 예외가 발생한다고 가정해보자. 이 때, 서비스 계층으로 예외가 올라오면 서비스 계층은 이 ID 뒤에 숫자를 붙여 새로운 ID를 만들어 다시 한번 저장을 시도해볼 수 있을 것이다. 즉, Repository 계층에서 발생할 수 있는 예외를 서비스 계층에서 복구를 해주는 것이다. 데이터..
이 글은 인프런 김영한님의 강의를 복습하며 정리한 글입니다. 체크 예외 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수한 자바 코드로 작성되는 것이 좋다. 이렇게 하려면 예외에 대한 의존 문제도 해결해야한다. 예를 들어 위의 코드를 볼 수 있다. 위는 MemberServiceV3_3 코드인데, 메서드에 "throws SQLException'이 있는 것을 확인할 수 있다. @Transcational을 이용해 트랜잭션 추상화로 DB 기술 의존성을 해결한 것으로 이해를 했으나, 사실은 SQLException이 남아있기 때문에 아직까지 DB 기술에서 자유롭지는 않다. 앞서 배웠던 예외들을 살펴보면 이 SQLException은 Service 계층에서 처리할 수 없는 문제다. 즉, 서비스 계층이 신경쓰..