2022-06-24
ํ ํ๋ก์ ํธ 3๊ฐ.. + ๊ธฐ๋ง๊ณ ์ฌ๋ก ์ธํด 20์ผ๋ง์ ๋ค์ ์์ํ๊ฒ ๋์๋ค.. ์ค๋๋ง์ ๋ณด๋ ๊ฒ์ด๋ ๋งํผ ์์ ์ ๋ฆฌํ ๋ด์ฉ๋ค์ ์ฝ์ด๋ณด๊ณ ๋ค์ ์์ํ๋ค
Spring JdbcTemplate
1. ํน์ง
- Pure Jdbc์ ๋์ผํ ํ๊ฒฝ์์ ์งํ
- Mybatis์ Spring JdbcTemplate์ JDBC API์์ ์ด์ ์ ๋ดค๋ Connection์ฐ๊ฒฐํ๊ณ ๋ฑ๋ฑ์ ๊ณผ์ ์์ ๋ฐ๋ณต๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ค.
- SQL์ ๊ทธ๋๋ก ์ง์ ์์ฑํด์ผ ํจ.
2. Example
public class JdbcTemplateMemberRepository
implements MemberRepository{
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcTemplateMemberRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
public Member save(Member member) {
SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("name", member.getName());
Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters));
member.setId(key.longValue());
return member;
}
@Override
public Optional<Member> findById(Long id) {
List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper());
return result.stream().findAny();
}
private RowMapper<Member> memberRowMapper(){
return new RowMapper<Member>() {
@Override
public Member mapRow(ResultSet rs, int rowNum) throws SQLException {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return member;
}
}
}
}
๊ธฐ์กด์ pure jdbc ์ฝ๋์์ ๋ฐ๋ณต๋๋ Connection์ ๋ด๋ถ์์ ์ฒ๋ฆฌํด์ฃผ๊ณ , Resultset๊ณผ ๊ด๋ จ๋ ํ๋์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋จํ๊ฒ ์ฝ๋ฉํ ์ ์๋ค.
save๋ก์ง์ ๋ณด๋ฉด SimpleJdbcInsert ํด๋์ค๋ฅผ ํตํด ํ ์ด๋ธ๋ช ๊ณผ ํค์ ๋ค์์ ์ค์ ํด์ฃผ๊ณ ๋ณ๊ฒฝํ ํ๋ผ๋ฏธํฐ์ key-value๋ฅผ ์ค์ ํ๋ฉด ๊ฐ๋จํ๊ฒ ์คํํ ์ ์๋ค. Pure jdbc์ ๋นํด ์ฝ๋๊ฐ ํจ์ฌ ์ค์ด๋ค์๋ค!
'๐ Backend > ๐ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
8. AOP (0) | 2022.07.02 |
---|---|
7. Spring DB ์ ๊ทผ ๊ธฐ์ - JPA, Spring Data JPA (0) | 2022.07.02 |
7. Spring DB ์ ๊ทผ ๊ธฐ์ - JDBC (0) | 2022.07.02 |
7. Spring DB ์ ๊ทผ ๊ธฐ์ - H2 (0) | 2022.07.02 |
6. Spring Bean ๋ฑ๋ก (0) | 2022.07.02 |