[JdbcTemplate] JDBC Template ์ด๋?
by rlaehddnd0422JdbcTemplate ๋?
JdbcTemplate์ JDBC ์ฝ์ด ํจํค์ง์ ์ค์ ํด๋์ค๋ก JDBC์ ์ฌ์ฉ์ ๋จ์ํํ๊ณ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋๋ฐ ๋์์ ์ฃผ๋ ํด๋์ค์ ๋๋ค.
- JdbcTemplate์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ JDBC๊ธฐ์ ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
JdbcTemplate ์ฌ์ฉ ์ด์
JdbcTemplate์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐ๋ณต์์ ์ ์ฝ๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ์ปค๋ฅ์ ํ๋
- ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณตํ๋๋ก ๋ฃจํ ์คํ ๋ฐ ๊ฒฐ๊ณผ ๋ฐ์ธ๋ฉ
- statement ์์ฑ ๋ฐ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ ํ ์ฟผ๋ฆฌ ์คํ
- ํธ๋์ญ์ ์ ๋ค๋ฃจ๊ธฐ ์ํ ์ปค๋ฅ์ ๋๊ธฐํ
- ์์ธ ๋ฐ์ ์ ์คํ๋ง ์์ธ ๋ณํ๊ธฐ ์คํ
- ๋ฆฌ์์ค ์ข ๋ฃ
JdbcTemplate ์ JDBC๋ก ๊ฐ๋ฐํ ๋ ๋ฐ์ํ๋ ๋ฐ๋ณต์ ๋๋ถ๋ถ ํด๊ฒฐํด์ค๋๋ค.. ๊ทธ ๋ฟ๋ง ์๋๋ผ ์ง๊ธ๊น์ง ํ์ตํ๋, ํธ๋์ญ์ ์ ์ํ ์ปค๋ฅ์ ๋๊ธฐํ๋ ๋ฌผ๋ก ์ด๊ณ , ์์ธ ๋ฐ์์ ์คํ๋ง ์์ธ ๋ณํ๊ธฐ๋ ์๋์ผ๋ก ์คํํด์ค๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ๊ณ์ธต์ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฐ ๋ฉ์๋๋ฅผ ์ดํด๋ณด๋ฉด ๋ง์ ๋ถ๋ถ์ด ๋ฐ๋ณต๋๊ณ ์์ต๋๋ค.
public void update(String memberId, int money) {
String sql = "update member set money = ? where member_id = ?";
Connection con = null;
PreparedStatement pstmt = null;
try
{
con = getConnection();
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,money);
pstmt.setString(2,memberId);
int resultSize = pstmt.executeUpdate();
log.info("resultSize = {}",resultSize);
} catch (SQLException e) {
throw exTranslator.translate("update",sql,e);
}finally
{
close(con,pstmt,null);
}
}
public void delete(String memberId){
String sql = "delete from member where member_id = ?";
Connection con = null;
PreparedStatement pstmt = null;
try
{
con = getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberId);
pstmt.executeUpdate();
} catch (SQLException e) {
throw exTranslator.translate("delete",sql,e);
}finally {
close(con,pstmt,null);
}
}
์ปค๋ฅ์ ์ ๋ฐ๊ณ , statement๋ฅผ ์ค๋น์ํค๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋ ์์ ๊น์ง .. ๊ฝค ๋ง์ ๋ถ๋ถ๋ค์ด ๋ฐ๋ณต๋๊ณ ์์ต๋๋ค.
JdbcTemplate์ ์ ์ฉํ๋ฉด ์ด ๋ชจ๋ ์์ ์ ํ์ค๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
JdbcTemplate ์ ์ฉ
@Slf4j
public class MemberRepositoryV4_3 implements MemberRepository {
// private final SQLExceptionTranslator exTranslator;
private final JdbcTemplate template; // ์ปค๋ฅ์
์์ , ํ๋ผ๋ฏธํฐ ์กฐํ, result ๋ฐ์ธ๋ฉ , ๋ฑ๋ฑ..
public MemberRepositoryV4_3(DataSource dataSource)
{
this.template = new JdbcTemplate(dataSource);
}
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);
}
private RowMapper<Member> memberRowMapper() {
return (rs, rowNum) -> {
Member member = new Member();
member.setMemberId(rs.getString("member_id"));
member.setMoney(rs.getInt("money"));
return member;
};
}
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);
}
- JdbcTemplate์ ๋ด๋ถ์์ ์์ธ ๋ณํ๊ธฐ๋ฅผ ์๋์ผ๋ก ์ฌ์ฉํ๋ฏ๋ก, ์์ธ ๋ณํ๊ธฐ๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ค ํ์๊ฐ ์์ต๋๋ค.
- ๋ชจ๋ ์์ ์ template.update() / template.queryForObject() ๋ฑ ๋ฉ์๋ ํ๋๋ก ์ปค๋ฅ์ ์กฐํ๋ถํฐ ๋ฆฌ์์ค ์ ๋ฆฌ๊น์ง ํ ๋ฒ์ ํด๊ฒฐํด์ค๋๋ค.
์๋น์ค ๊ณ์ธต ๋ณ๊ฒฝ์
- ํธ๋์ญ์ ์ถ์ํ + ํธ๋์ญ์ AOP ๋๋ถ์ ์๋น์ค ๊ณ์ธต์ ์์์ฑ์ ์ต๋ํ ์ ์งํ๋ฉด์ ์๋น์ค ๊ณ์ธต์์ ํธ๋์ญ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์คํ๋ง์ด ์ ๊ณตํ๋ ์์ธ ์ถ์ํ์ ์์ธ ๋ณํ๊ธฐ ๋๋ถ์, ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ ์ด ๋ณ๊ฒฝ๋์ด๋ ์๋น์ค ๊ณ์ธต์ ์์์ฑ์ ์ ์งํ๋ฉด์ ์์ธ๋ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค.
- ์๋น์ค ๊ณ์ธต์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค์ ์์กดํ ๋๋ถ์ ํฅํ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ตฌํ ๊ธฐ์ ๋ก ๋ณ๊ฒฝ๋์ด๋ ์๋น์ค ๊ณ์ธต์ ์์ํ๊ฒ ์ ์งํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ๊ณ์ธต ๋ณ๊ฒฝ์
- JDBC๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ณต์ฝ๋๊ฐ jdbcTemplate์ ์ฌ์ฉํจ์ผ๋ก์จ ์ ๊ฑฐ๋์์ต๋๋ค.
<์ ๋ฆฌ>
- jdbcTemplate์ ์ฌ์ฉํด ๋ฆฌํฌ์งํ ๋ฆฌ ๊ณ์ธต์์ JDBC๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ณต์ฝ๋๋ฅผ ๋งค์ฐ ์งง๊ฒ ์ค์ผ ์ ์์์ต๋๋ค.
- ์ด์ jdbcTemplate์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
<์ฐธ๊ณ ์๋ฃ>
'๐ Backend > DB Access' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JdbcTemplate] JdbcTemplate ์ ์ฉ (0) | 2023.04.12 |
---|---|
[JdbcTemplate] RowMapper์ ๋ํด (0) | 2023.04.12 |
Spring์ด ์ ๊ณตํ๋ ์์ธ ์ถ์ํ, ์์ธ ๋ณํ๊ธฐ ์ฌ์ฉ (0) | 2023.04.07 |
ErrorCode๋ฅผ ์ด์ฉํ ํน์ ์์ธ ๋ณต๊ตฌ (0) | 2023.04.07 |
ํธ๋์ญ์ AOP + ์์ธ ์ ํ ์ ์ฉํ Service ๊ณ์ธต ๋ถ๋ฆฌ (0) | 2023.04.06 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422