You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
JdbcTemplate 소개와 설정
장점
설정의 편리함
spring-jdbc라이브러리에 포함되어 있는데 , 이 라이브러리는 스프링으로 JDBC 를 사용할때 기본으로 사용되는 라이브러리이다. 그리고 별도의 복잡한 설정없이 바로 사용할 수 있다.반복 문제 해결
statement를 준비하고 실행statement,resultset종료단점
dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' //JdbcTemplate 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' //H2 데이터베이스 추가 runtimeOnly 'com.h2database:h2' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'refresh해줘야 추가가 된다. External애서 찾아보기
‘item테이블 생성하기
JdbcTemplate 적용 1 - 기본
repository > jdbctemplate > jdbcTemplateV1memory에서 seqence로 id를 설정해줬다.
JdbcTemplateItemRepositoryV1은ItemRepositor인터페이스를 구현했다.JdbcTemplate을 사용할 때 관례상 이 방법을 많이 사용한다.JdbcTemplate을 스프링 빈으로 직접 등록하고 주입받아도 된다.save()
데이터를 저장한다.
SimpleJdbcInsert라는 훨씬 편리한 기능이 있다.update()
데이터를 업데이트한다.
template.update(): 데이터를 변경할때는 update()를 사용하면 된다.findById()
데이터를 하나 조회한다.
RowMapper는 데이터 베이스의 반환 결과인 ResultSet을 객체로 변환한다.Optional.empty를 대신 반환하면 된다.’queryForObject()인터페이스의 정의findAll()
데이터를 리스트로 조회한다.
그리고 검색 조건으로 적절한 데이터를 찾는다.
template.query()query() 인터페이스 정의
itemRowMapper()
데이터베이스의 조회 결과를 객체로 변환할때 사용한다.
JDBC를 직접 사용할때 ResultSet을 사용했던 부분을 떠올리면 된다.
차이가 있다면 다음과 같이 JdbcTemplate이 다음과 같은 루프를 돌려주고 개발자는 RowMapper를 구현해서 그 내부 코드만 채운다고 이해하면 된다.
JdbcTemplate 적용2 - 동적 쿼리문제
결과를 검색하는
findAll()에서 어려운 부분은 사용자가 검색하는 값에 따라 실행하는 SQL이 동적으로 달라져야 한다는 점이다.결과적으로 4가지 상황에 따른 SQL을 동적으로 생성해야 한다. 동적쿼리는 개발하려면 생각보다 다양한 상황을 고민해야한다.
JdbcTemplate 적용3 - 구성과 실행
jdbcTemplateV1Config
Config[application.properties](http://application.properties/)dataBase 설정실행
로그 추가
JdbcTemplate이 실행하는 SQL로그를 확인하려면
application.properties에 다음을 추가한다.All reactions