개발/spring1

22강(스프링 JdbcTemplate)

LoafingCat 2022. 12. 14. 01:35

순수 Jdbc 동일한 환경설정을 하면 된다.

스프링 JdbcTemplate MyBatis 같은 라이브러리는 JDBC API에서 반복 코드를 대부분 제거해준다. 하지만 SQL 직접 작성해야한다. JdbcTemplate 실무에서도 많이 쓴다.

 

 

얘를 만들어준다.

 

 

MemberRepository를 implements해주자. 여기서 JdbcTemplate를 쓰면 된다. 데이터 소스를 인잭션 받고 JdbcTemplate에

new JdbcTemplate에 dataSource를 넣어주면 된다. 이러면 스프링이 자동으로 인잭션 해준다. 그리고 생성하자 하나뿐인 경우에는 @Autowired 어노테이션을 생략할 있다.

 

 

아이디를 조회하는 쿼리다. 결과가 나오는걸 RowMapper 맵핑을 해줘야한다.

 

 

이렇게 RowMapper를 만들어준다. resultSet 결과를 멤버 객체로 매핑을(해당 값이 다른 값을 가리키도록) 해준 다음에 돌려주는 식이다.

 

 

만든 RowMapper() 번째 파라미터에 넣어준다. result stream으로 바꿔서 findAny(), 하고 옵셔널로 반환한다.

Jdbc 비교해보면

 

 

겁나 차이가 난다는걸 있다. 기다란 코드를 줄이고 줄인게 JdbcTemplate 라이브러리라고 보면 된다.

 

 

JdbcTemplate 넘겨서 만드는 SimpleJdbcInsert라는 애가 있는데 WithTableName하고 usingGenerateKeyColums 넣으면 쿼리를 필요가 없게 된다. Insert문을 만들어주는 것이다. 도큐먼트 보면 굉장히 친절하게 설명이 되어있다. 이렇게 쓰는거구나 하는 감을 잡는 정도로 알고 있으라고 한다.

 

 

Name 찾는건 id를 name으로 바꿔주면 된다.

 

 

모든 멤버를 List 반환해준다. 

 

 

SpringConfig에 JdbcTemplateMemberRepository(dataSource)로 갈아끼워주자. 그리고 실행.

 

이제는 스프링 통합테스트를 만들어 놨기 때문에 어플리케이션 띄워서 검증해볼 필요가 없다.

 

 

오류가 뜬다. 파라미터 하나가 세팅이 제대로 안됐다고 한다. 이게 테스트 케이스가 좋은 이유다. 왜냐하면 웹으로 띄워서 돌려보려면 웹으로 가서 회원가입하고 누르고 입력하고 확인하는 복잡한 절차가 필요하기 때문이다.

 

 

파라미터 id 넣어주고 다시 실행해보면

 

 

db까지 연동한 테스트가 실제로 성공을 것이다. JdbcTemplate 버전으로 바꿨는데 제대로 돌아가는 것이다.