JdbcTemplate - update 메소드

Jang990·2026년 1월 25일
    public void updateStock(Connection conn, long foodId, int stock) throws SQLException {
        try (PreparedStatement ps = conn.prepareStatement("""
                    UPDATE foods
                    SET stock = ?
                    WHERE id = ?
                    """)) {
            ps.setInt(1, stock);
            ps.setLong(2, foodId);

            ps.executeUpdate();
        }
    }

여기서 PreparedStatementps.executeUpdate() 부분의 반복을 없애볼 것이다.

구현

public class MyJdbcTemplate {
    public int update(Connection conn, String sql, Object... params) {
        try(PreparedStatement ps = conn.prepareStatement(sql)) {
            for (int i = 0; i < params.length; i++)
                ps.setObject(i + 1, params[i]);

            return ps.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

커넥션과 SQL을 받아서 params를 그대로 박아 넣는 것이다.

MyJdbcTemplate으로 변경

이제 업데이트에 PreparedStatement를 직접 안써도 된다. try-catch도 필요없다.

    public void updateStock(Connection conn, long foodId, int stock) throws SQLException {
        myJdbcTemplate.update(conn, """
                UPDATE foods
                SET stock = ?
                WHERE id = ?
                """, stock, foodId);
    }

느낀점

순서가 뒤바뀌면 SQL이 이상하게 동작할 수 있다는게 아쉽다.
그래도 PreparedStatement를 처리하는 코드를 벗어났다는 점에서 위안이 된다.

profile
개발 기록 아카이브

0개의 댓글