자바에서 데이터베이스에 접근하기 위해서는 JDBC
는 필수적이다.
JDBC는 자바가 데이터베이스에 접근하기 위해 제공하는 API
인데, 오늘은 Spring에서 JDBC를 통해 데이터베이스에 접근하는 과정을 공부해볼 예정이다.
DAO
란 Data Access Object로써 데이터베이스에 접근하는 객체를 뜻한다.
Service와 데이터베이스의 연결점 역할
을 하고 데이터베이스에 접근하는 로직과 비즈니스로직을 분리하는 역할
을 한다.
SQL을 작성해서 데이터베이스에 접근하거나 적절한 CRUD API를 제공한다.
데이터베이스와 관련된 Connection 정보를 담고 있으며 bean으로 등록하여 Connection정보를 JDBC Template에 전달한다.
즉, 데이터베이스와 기본적인 연결 정보를 제공하는 역할을 한다.
Connection Pooling
을 통해 좀 더 빠르게 Connection을 도와준다.
properties.file에 정보를 작성하게되면 place holder를 통해 여러곳에서 작성 및 수정할 수 있다.
place holder를 통해 파라미터를 설정하였다면 properties.file에 있는 정보만 수정한다면 다른 곳에서도 동시에 수정되게 된다.
ex) {$jdbc.password}
//properties.file
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql//localhost:3306/databaseName
jdbc.username = root
jdbc.password = password
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html
//data source
<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>
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html
JDBC Template는 Spring JDBC의 접근 방법 중 하나로 Spring JDBC접근을 편리하게 해준다.
Plain JDBC API를 사용하기 위해서는
Driver
로드Connection
생성Statement
객체 생성 후 질의 실행ResultSet
객체에 저장close
와 예외처리, 트랜잭션과 같은 과정을 수행 해야 한다.
JDBC Template는 내부적으로 Plain JDBC API를 사용하고 있지만
등의 반복적인 일들을 개발자 대신 처리해 준다.
이로써 개발자는 Connection을 위한 DataSource 설정
, SQL작성
, 결과처리
만 해주면 된다.
JDBC Driver는 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환
해주는 클라이언트 사이드 어댑터이다.
데이터베이스마다 요구하는 Driver가 다르기 때문에 사용하는 데이터베이스에 맞는 Driver를 사용해 주어야 한다.
정리하자면 자바프로그램에서 데이터베이스에 접근하기 위해서는 DataSource
를 설정하여 BasicDataSource를 bean으로 등록 후, JDBC Template
에 주입하고 JDBC Template는 JDBC Driver
를 통해 데이터베이스에 접근하게 된다.
Spring JDBC를 사용하기 위해서는 필수적인 라이브러리가 있다.
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html