스프링 프레임워크의 데이터베이스 엑세스 작업의 주요 특징

  • javax.sql.DataSource 인터페이스를 구현한 Connection Pool 구현 객체가 반드시 필요하다. (BasicDataSource)
    • commons-dbcp 라이브러리가 필요하다.
  • 데이터베이스 엑세스 작업 중 오류가 발생하면 DataAccessException이 발생한다.
    • DataAccessException은 RuntimeException의 하위 클래스다.
    • Unchecked 예외다. (예외처리를 생략해도 된다) image
    • DataAccessException을 상속받는 다양한 하위 클래스가 존재한다.
  • DB 엑세스 기술별로 다양한 xxxTemplate, xxxDaoSupport 클래스를 제공한다.
    • 예시
      • jdbc : JdbcTemplate, JdbcDaoSupport
      • ibatis : SqlMapClientTemplate, SqlMapClientDaoSupport
      • hibernate : HibernateTemplate, HibernateDaoSupport
  • 다양한 DB 엑세스 프레임워크와 연동을 지원한다.
    • ibatis(spring 4버전부터 제외), mybatis, hibernate, JPA 등등
  • 선언적 트랜잭션 처리를 지원한다.
    • 트랜잭션 처리와 관련된 코드를 직접 작성하는 것이 아니라, 트랜잭션 처리가 필요한 클래스나 메소드에 어노테이션을 붙이거나, 클래스들이 위치한 패키지를 지정하기만 하면 트랜잭션 처리가 자동으로 지원된다.

빈 설정 파일

<!-- Connection을 제공하는 객체
    jdbc 드라이버 클래스명, 데이터베이스 접속 URL, 사용자명, 비밀번호를 제공해야 한다.
-->
<bean id="basicDataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
    <property name="url"			 value="jdbc:oracle:thin:@localhost:1521:xe"></property>
    <property name="username"		 value=""></property>
    <property name="password"		 value=""></property>
</bean>

<!--
    JdbcTemplate 클래스는 INSERT, UPDATE, DELETE, SELECT 쿼리문을 간단하게 실행할 수 있는 메소드를 제공한다.
	* 커넥션을 제공하는 ConnectionPool객체, BasicDataSource를 제공받아야 한다.
-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="basicDataSource"></property>
</bean>

<!--
    업무로직 구현에 필요한 데이터베이스 작업이 구현된 EmployeeDaoImpl를 스프링의 빈으로 등록시킨다.
	* SQL 실행작업을 지원하는 JdbcTemplate 객체를 제공받아야 한다.
-->
<bean id="employeeDaoImpl" class="com.sample.dao.EmployeeDaoImpl">
    <property name="template" ref="jdbcTemplate"></property>
</bean>

<!--  
    업무로직이 구현된 EmployeeServiceImpl를 스프링의 빈으로 등록시킨다.
-->
<bean id="employeeServiceImpl" class="com.sample.service.EmployeeServiceImpl">
    <property name="employeeDao" ref="employeeDaoImpl"></property>
</bean>