스프링에서 데이터베이스와 연동하는 방법은 DataSource방식을 사용하는 것이다. 스프링이 지원하는 JPA/하이버네이트/Mybatis를 사용할 경우에 데이터베이스 연결을 위해 DataSource를 설정해주어야한다. 스프링은 다음과 같은 3가지 방식의 DataSource설정을 지원하고있다.
- 커넥션풀을 이용한 DataSource설정
- JNDI를 이용한 DataSource설정
- DriverManager를 이용한 DataSource설정(테스트 목적)
1. 커넥션풀을 이용한 DataSource설정
스프링은 커넥션풀 구현 클래스를 직접 제공해 주지않아서 maven의존을 통해 c3p0같은 커넥션 풀 라이브러리를 추가해 주어야한다.
<bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name = "driverClass" value = "oracle.jdbc.driver.OracleDriver"/>
<property name = "jdbcUrl" value = "주소"/>
<property name = "user" value = "oracle"/>
<property name = "password" value = "oracle"/>
</bean>
의존설정 후 위와같이 스프링설정파일에 dataSource빈을 추가한다.
2. DriverManger를 이용한 DataSrouce설정
로컬(테스트)용으로 DB를 사용할 경우 DriverManger를 사용하면 된다.
<bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverMangerDataSource">
<property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver"/>
<property name = "url" value = "주소/>
<property name = "username" value = "oracle"/>
<property name = "password" value = "oracle"/>
</bean>
3. 선언적 트랜잭션 처리
- <tx:advice>태그를 이용한 트랜잭션처리
<bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name = "dataSource" ref = "dataSource"></property>
</bean>
<tx:advice id = "txAdivce" transaction-manager = "transactionManager">
<tx:attributes>
<tx:method name="order" propagation = "REQUIRED"/>
<tx:method name="get*" read-only = "true"/>
</tx:attributes>
</tx:advice>
위는실제로 사용되는 트랜잭션이 아닌 선언만 해놓은 것이고 aop와 연동해서 사용할 수 있다.
<aop:config>
<aop:pointcut id = "publicMethod" expression = "excution(public * ...)"/>
<aop:advisor advice-ref = "txAdvice" pointcut-ref = "publicMethod"/>
</aop:config>
- @Transactional 애노테이션을 이용한 트랜잭션처리
Transactional애노테이션은 메서드위에 @Transactional 설정을 통해 사용할 수 있다. 애노테이션을 사용하려면 스프링 xml설정파일에 <tx:annotaion-driven/>을 설정해주어야한다.
@Controller
public class ex{
@Transactional(propagation = REQUIRED)
public void transactionEx(){
}
}
'Spring' 카테고리의 다른 글
Spring(16) - Mybatis연동 (0) | 2019.04.18 |
---|---|
Spring(15) - JPA, ORM, Hibernate, Mybatis (0) | 2019.04.18 |
Spring(13) - WebSocket (0) | 2019.04.16 |
Spring(12) - 파일업로드 (0) | 2019.04.16 |
Spring(11) - XML/JSON, @RequestBody, @ResponseBody (0) | 2019.04.16 |