스프링 JdbcTemplate
MyBatis와 비슷한 라이브러리. JDBC API에서의 반복적인 코드를 제거한 라이브러리. sql은 직접 작성해야 함.
JdbcTemplate을 써야 함. JdbcTemplate은 injection을 받을 수 있는 것은 아님.
dataSource가 injection받음.
생성자가 딱 하나만 있으면 스프링 빈으로 등록되면 @Autowired 생략 가능
스프링이 자동으로 dataSource injection 해줌
src/main/java/hello/hellospring/repository/JdbcTemplateMemberRepository.java
public class JdbcTemplateMemberRepository implements MemberRepository {
private final JdbcTemplate jdbcTemplate;
@Autowired // 생략 가능. 생성자 하나.
public JdbcTemplateMemberRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
...
}
findById()
JdbcMemberRepository에 비해 코드가 두 줄로 짧아짐.
JdbcTemplate 라이브러리를 사용해 코드를 줄임.
@Override
public Optional<Member> findById(Long id) {
List<Member> result = jdbcTemplate.query("select * from where id = ?", memberRowMapper());
return result.stream().findAny();
}
JdbcTemplate : 디자인 패턴 중 template method pattern이 많이 들어가 있음
save()
쿼리를 짤 필요 없음. 테이블 명, pk, name 으로 insert문 만들어줌
memberRowMapper()
객체 생성. result set 결과를 객체로 맵핑해 리턴
스프링 통합테스트를 만들어 놨으므로 웹 어플리케이션 띄워서 검증할 필요 없음. 통합테스트 돌려보기.
intellij - control + r : 마지막에 실행했던 것 다시 실행
DB까지 연동한 테스트 성공 (JdbcTemplate 버전)
'Spring_inflearn > 입문' 카테고리의 다른 글
[Spring] inflearn 스프링 입문 - 스프링 DB 접근 기술 6 (0) | 2022.09.15 |
---|---|
[Spring] inflearn 스프링 입문 - 스프링 DB 접근 기술 5 (1) | 2022.09.15 |
[Spring] inflearn 스프링 입문 - 스프링 DB 접근 기술 3 (0) | 2022.09.15 |
[Spring] inflearn 스프링 입문 - 스프링 DB 접근 기술 2 (0) | 2022.09.15 |
[Spring] inflearn 스프링 입문 - 스프링 DB 접근 기술 1 (0) | 2022.09.14 |
댓글