[Spring] Spring JDBC를 이용한 데이터 접근

Gavin Ariel Lee·2021년 9월 14일
0

DataSource

  • JDBC 명세의 일부분이면서 일반화된 연결 팩토리
  • DB와 관계된 connection 정보를 담고 있으며, Bean으로 등록하여 인자를 넘겨줌
    → Spring은 DataSource로 DB와 연결 획득

DataSource 역할

DB Server와의 기본적인 연결
DB Connection Pooling 기능
트랙잭션 처리

DB Connection Pooling

자바 프로그램에서 DB 연결 시 시간이 걸리기 때문에 일정량의 connection을 미리 생성해서 저장소에 저장. 요청이 있을때 꺼내서 제공하여 시간을 절약하는 프로그래밍 기법을 Connection Pooling이라고 함

DataSource 설정 및 Bean 등록, 주입 방법

DB Server에 관한 정보(Property)를 설정

# jdbc.properties
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql//localhost:3306/databaseName
jdbc.username = root
jdbc.password = password

해당 datasource를 Bean으로 등록

<context:property-placeholder location="com/spring/props/jdbc.properties"/>

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
  </bean>

JDBC (Java Database Connectivity)

  • DB에 접근할 수 있도록 Java에서 제공하는 API
  • DB에서 자료를 쿼리하거나 업데이트 하는 방법 제공
    쿼리(query) : DB에 정보를 요청
  • Plain JDBC API의 문제점
    - 쿼리 실행 전후에 많은 코드 작성 필요(연결 생성, 명령, ResultSet 닫기 등)
    - DB로직에서 예외처리 코드 수행
    - 트랙잭션을 처리해야 함

Spring JDBC 역할

  • Connection 열기/닫기
  • Statement 준비/닫기 및 실행
  • ResultSet Loop 처리
  • Exception 처리/반환
  • Transaction 처리

Spring JDBC 개발자 역할

핵심적 일만 작업해주면 나머지는 Framework가 알아서 처리

@Repository
public class SpringDaoImpl{
	private JDBCTemplate jdbcTemplate;
    
    @Autowired
    public void setDataSource(DataSource dataSource) {
    	this.jdbcTemplate = new JdbcTemplate(dataSource);
    }
    
    public int getCustomerCount() {
    	return jdbcTemplate.queryForInt("select count(*) from customers");
    }
}
  • datasource 설정
  • sql문 작성
  • 결과 처리

JDBC Template

  • Spring JDBC 접근 방법 중 하나
  • 내부적으로 Plain JDBC API를 사용하지만 Plian JDBC API의 문제점을 제거한 형태의 Spring에서 제공하는 Class

JDBC Template 제공 기능

  • 실행 : Insert, Update 같이 DB 데이터 변경이 일어나는 쿼리 수행
  • 조회 : Select를 이용해 데이터 조회
  • 배치 : 한번에 여러개의 쿼리 수행 작업

JDBC Driver

자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터

  • DB마다 Driver가 존재, 사용하는 DB에 맞는 JDBC Driver 사용
  • datasource를 JDBC Template에 주입(DI)시키고, JDBC Template은 JDBC Driver를 이용하여 DB에 접근
profile
As you wish

0개의 댓글