728x90
JDBC Template에 DataSource를 주입(DI)한다.
JDBC Template은 JDBC Driver를 이용해 DB에 접근한다.
1. DAO(Data Access Object) 란?
DAO는 실제로 DB에 접근하는 객체로 Service와 DB를 연결하는 고리의 역할을 한다.
2. JDBC(Java Database Connectivity) 란?
JDBC는 DB에 접근할 수 있도록 Java에서 제공하는 API이다.
JDBC API는 쿼리 실행 전후로 연결 생성, 닫기, 예외 처리 코드 등 많은 코드를 반복적으로 작성해야하므로 가독성도 떨어지고 시간이 낭비되는 문제가 있다.
3. JdbcTemplate 이란?
JdbcTemplate은 SpringJDBC 접근 방법 중 하나로 JDBC API의 문제점들을 제거한 Spring에서 제공하는 클래스로 다음과 같은 일들을 한다.
- Connection 열기와 닫기
- Statement 준비와 닫기
- Statement 실행
- ResultSet Loop 처리
- Exception 처리와 반환
- Transaction 처리
4. DataSource 란?
DB와 관계된 Connection 정보를 담고 있으며, bean으로 등록하여 JdbcTemplate의 인자로 넘겨준다.
이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다.
<DataSource 설정 및 빈 등록 방법>
1) application.properties 파일
// url을 넣어주면 자동으로 connection 됨
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
2) SpringConfig 클래스 파일
package hello.hellospring;
import hello.hellospring.repository.JdbcMemberRepository;
import hello.hellospring.repository.JdbcTemplateMemberRepository;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class SpringConfig {
// application.properties에서 이미 자동으로 빈 등록이 됨
private final DataSource dataSource;
public SpringConfig(DataSource dataSource) {
this.dataSource = dataSource;
}
// 스프링 빈에 등록
@Bean
public MemberService memberService() {
return new MemberService(memberRepository()); // 의존 관계 설정
}
// 나중에 DB가 정해지면 바뀔 부분
@Bean
public MemberRepository memberRepository() {
//return new MemoryMemberRepository();
//return new JdbcMemberRepository(dataSource); // JdbcMemberRepository가 dataSource 사용
return new JdbcTemplateMemberRepository(dataSource); // JdbcTempalteRepository가 dataSource 사용
}
}
[참고] https://juntcom.tistory.com/2
[참고] https://esoongan.tistory.com/164
728x90
'Spring > Spring 학습' 카테고리의 다른 글
[Spring Security] CSRF /logout 설정 (0) | 2022.10.11 |
---|---|
[Spring] 스프링 빈과 의존 관계 설정 (0) | 2022.04.28 |