Spring Boot JDBC
Spring Boot JDBC를 사용하기 위해서는 다음과 같은 의존성이 필요하다.
org.springframework.boot spring-boot-starter-jdbc
com.oracle.database.jdbc ojdbc8
빌드 프레임워크에 따라 다음과 같이 추가하거나 프로젝트 생성 화면에서 설정한다.
spring-boot-starter-jdbc
를 설정할 경우 다음과 같이 종속된 의존성이 추가된다.
spring-boot-starter-jdbc프로젝트 생성
boot05jdbc
프로젝트를 생성한다.
프로젝트 정보 입력
Maven일 경우 추가되는 항목
Copy <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
Gradle일 경우 추가되는 항목
Copy implementation group: 'org.springframework.boot' , name: 'spring-boot-starter-jdbc' , version: '2.7.3'
implementation group: 'com.oracle.database.jdbc' , name: 'ojdbc8' , version: '21.7.0.0'
기본 설정 사용
Spring Boot에서는 제공되는 설정을 통해 JDBC 설정을 수행할 수 있다.
application.properties
Copy spring.datasource.driver-class-name= oracle.jdbc.OracleDriver
spring.datasource.url= jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username= hacademy
spring.datasource.password= hacademy
Configuration 생성
제공되는 설정 외 직접 구현하고 싶은 경우에는 @Configuration
을 생성하여 도구를 직접 등록할 수 있다.
Package 생성
Configuration class 생성
생성한 패키지 내부에 DatabaseConfiguration
이라는 이름으로 클래스를 작성한다.
Bean 생성
Configuration 내부에 @Bean
생성 코드를 작성한다.
Copy @ Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
dataSource . setDriverClassName ( "oracle.jdbc.OracleDriver" );
dataSource . setUrl ( "jdbc:oracle:thin:@localhost:1521:xe" );
dataSource . setUsername ( "hacademy" );
dataSource . setPassword ( "hacademy" );
return dataSource;
}
@ Bean
public JdbcTemplate jdbcTemplate( DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource) ;
return jdbcTemplate;
}
생성된 Bean은 Spring에서 자체적으로 Component scan을 통하여 Spring Container에 등록하므로 프로젝트 내 어디서든 사용 가능하다. 또한 Bean 생성 시 매개변수로 선언된 항목들은 Spring에서 가능한 요소를 찾아서 주입(Injection) 처리한다.
Configuration 생성 시 주의사항
package의 경우 프로젝트 생성 시 입력하는 기본 패키지이거나 그 하위 패키지여야 한다. 만약 해당 패키지가 아닐 경우에는 별도로 @ComponentScan
을 추가해야 한다.
Copy @ ComponentScan ( "탐색할패키지이름" )
@ SpringBootApplication
public class Boot05jdbcApplication {
public static void main ( String [] args) {
SpringApplication . run ( Boot05jdbcApplication . class , args);
}
}
등록된 Bean 확인
Spring Actuator 를 통해 등록된 Bean을 확인할 수 있다. 위의 두 가지 방법 중 하나를 사용하여 등록하였다면 다음과 같이 등록된 bean에서 찾을 수 있다. 이 문서에서는 Configuration 생성 방식으로 구현하였다.
Bean 사용
등록이 완료된 Bean은 다음과 같은 Annotation으로 사용할 수 있다.
@Autowired
- 일치하는 타입의 대상을 찾아 주입하는 Annotation
@Qualifier
- @Autowired
와 같이 사용하여 대상의 식별 ID를 사용하여 주입하는 Annotation
원하는 클래스 내부에 다음과 같이 필드를 선언하여 사용한다.
Copy @ Autowired
private JdbcTemplate jdbcTemplate;
@Qualifier
와 같이 사용할 경우는 다음과 같이 작성한다.
Copy @ Autowired @ Qualifier ( "jdbcTemplate" )
private JdbcTemplate jdbcTemplate;
일반적으로 @Qualifier
는 동일한 타입의 객체가 두 개 이상이어서 @Autowired
만으로 식별이 불가능한 상황일 경우 사용한다.