JdbcTemplate

wangjh789·2022년 8월 15일
0

[Spring] 스프링-DB-1

목록 보기
15/15

리포지토리에 Jdbc를 사용하기 위한 코드들이 같은 로직으로 코드가 중복되어 있다.

  • 커넥션 조회, 커넥션 동기화
  • PreparedStatement 생성 및 파라미터 바인딩
  • 쿼리 실행
  • 결과 바인딩
  • 예외 발생 시 스프링 예외 변환기 실행
  • 리소스 종료

-> 템플릿 콜백 패턴으로 해결

    public Member save(Member member) {
        String sql = "insert into member(member_id,money) values(?,?)";
        template.update(sql, member.getMemberId(), member.getMoney());
        return member;
    }

    public Member findById(String memberId) {
        String sql = "select * from member where member_id = ?";
        return template.queryForObject(sql, memberRowMapper(), memberId);
    }

    public void update(String memberId, int money) {
        String sql = "update member set money=? where member_id=?";
        template.update(sql, money, memberId);
    }

    public void delete(String memberId) {
        String sql = "delete from member where member_id = ?";
        template.update(sql, memberId);
    }


    private RowMapper<Member> memberRowMapper() {
        return (rs, rowNum) -> {
            Member member = new Member();
            member.setMemberId(rs.getString("member_id"));
            member.setMoney(rs.getInt("money"));
            return member;
        };
    }

JdbcTemplate은 JDBC로 개발할 때 발생하는 반복을 대부분 해결한다. 트랜잭션을 위한 커넥션 동기화는 물론이고, 예외 발생 시 스프링 에외 변환기도 자동으로 실행해준다.

profile
기록

0개의 댓글