-
Spring 에서 DB 접속하는 방법에 대한 개념 정리스프링 2016. 7. 23. 16:08
코드로 배우는 스프링 웹프로젝트 라는 책을 보고 있다. 쉽게 써진 책이고 스프링의 기술적 설명을 최소화한 상태로 진행하도록 구성되어 있어 초보가 보기에 참 좋은 책인 듯 하다.
Spring에서 DB에 접속을 하는 코드를 이해하려면 아래 내용을 알고 있어야 한다.
1. JDBC 만을 이용한 접속 테스트
pom.xml
123456<!-- MySQL connector/j --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.39</version></dependency>cs 위와 같이 작성하여 JDBC를 사용하기 위한 driver를 다운로드한다.
12345678910111213141516171819public class MySQLConnectionTest {private static final String DRIVER = "com.mysql.jdbc.Driver";private static final String URL = "jdbc:mysql://127.0.0.1:3306/repacat_schema";private static final String USER = "repacat";private static final String PW = "repacat";@Testpublic void testConnection() throws Exception {Class.forName(DRIVER);try(Connection conn = DriverManager.getConnection(URL, USER, PW)) {System.out.println(conn);} catch(Exception e) {e.printStackTrace();}}}cs Class.forName 으로 드라이버를 로드하고 커넥션을 만들 수 있다.
2. Spring 에서 dataSource 를 정의하고 이를 통한 접속 테스트
pom.xml
123456<!-- spring-jdbc : jdbc 프로그래밍하면서 개발하기 지루한 부분을 spring이 대신 해줌 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${org.springframework-version}</version></dependency>cs root-context.xml
1234567<!-- dataSource 설정, spring-jdbc 모듈 사용, spring 에서 jdbc 를 통해 mysql 에 접속할 수 있게 함 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://127.0.0.1:3306/repacat_schema"></property><property name="username" value="repacat"></property><property name="password" value="repacat"></property></bean>cs root-context.xml 에 dataSource bean 을 선언하여 DI 받을 수 있도록 설정한다. dataSource bean 은 spring-jdbc 모듈에 있는 클래스(org.springframework.jdbc.datasource.DriverManagerDataSource)를 이용하여 JDBC 드라이버를 통해 MySQL 서버에 접속할 수 있게한다.
12345678910111213141516@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/**/*.xml"})public class DataSourceTest {@Injectprivate DataSource ds;@Testpublic void testConnection() throws Exception {try(Connection conn = ds.getConnection()) {System.out.println(conn);} catch(Exception e) {e.printStackTrace();}}}cs dataSourrce 를 DI 받고 이를 통해 커넥션을 만들 수 있다.
3. Spring 에서 MyBatis 를 설정하고 이를 이용한 접속 테스트
pom.xml
1234567891011<!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency>cs MyBatis 를 사용하기 위해 위 두 모듈이 필요하다.
root-context.xml
123456<!-- mybatis 설정, mybatis-spring 모듈 사용 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- mybatis 용 config 파일을 로드하도록 설정 --><property name="configLocation" value="classpath:/mybatis-config.xml"></property></bean>cs 마찬가지로 root-context.xml 에 MyBatis 를 사용하기 위한 bean 을 선언하여 DI 받을 수 있도록 한다. Mybatis 설정에는 기존에 정의한 DataSource 가 사용된다. sqlSessionFactory 는 MyBatis 사용시 꼭 필요한 객체라고 한다.
123456789101112131415161718192021@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/**/*.xml"})public class MyBatisTest {@Injectprivate SqlSessionFactory sqlSessionFactory;@Testpublic void testFactory() {System.out.println(sqlSessionFactory);}@Testpublic void testSession() throws Exception {try(SqlSession session = sqlSessionFactory.openSession()) {System.out.println(session);} catch(Exception e) {e.printStackTrace();}}}cs SqlSessionFactory 를 통해 Session 을 얻을 수 있다.
'스프링' 카테고리의 다른 글
AOP 설정을 root-context 와 servlet-context 에 했을 때의 차이점 (0) 2016.08.08 REST 요청에 대한 HTTP Status 415 에러 (3) 2016.08.08 스프링에서 설정을 통해 읽어들인 항목 확인 (0) 2016.07.24