JDBC 반복 문제 해결 - JdbcTemplate

박찬우·2024년 2월 2일

스프링 DB

목록 보기
23/53

JdbcTemplate

  • JDBC(커넥션, PreparedStatement, 결과 등) 반복을 효과적으로 처리하는 방법이 바로 템플릿 콜백 패턴이다.
  • 스프링은 JDBC의 반복 문제를 해결하기 위해 JdbcTemplate 이라는 템플릿을 제공한다

예)

  • 반복코드가 제거됨
@Slf4j
public class MemberRepositoryV5 implements MemberRepository{

    private final JdbcTemplate template;


    public MemberRepositoryV5(DataSource dataSource) {
        template = new JdbcTemplate(dataSource);
    }

    @Override
    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;
        };
    }
}
profile
진짜 개발자가 되어보자

0개의 댓글