[Spring] Spring MVC (2) - MyBatis 연동

seonjeong·2023년 2월 22일
0

Spring

목록 보기
5/27
post-thumbnail

💖 DB를 사용하기 위한 설정

Spring과 MyBatis를 연동하기 위해 기존 설정에서 몇 가지를 추가해 주었다

🔥 라이브러리 추가

<!-- mybatis-spring 연동 라이브러리 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
 	 <version>2.0.3</version>
</dependency>
<!-- mybatis 라이브러리 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>
<!-- spring에서 database 처리와 transaction 처리 라이브러리 -->
<dependency>
  <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.25</version>
</dependency>
<!-- spring에서 database 처리 라이브러리-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.25</version>
</dependency>

🔥 web.xml

application-context
- 전체 계층구조에서 최상단에 위치한 컨텍스트
- 서로 다른 서블릿 컨텍스트에서 공유해야하는 Bean들을 등록해놓고 사용
- 웹 애플리케이션 전체에 적용 가능한 프로퍼티, DB 연결, 로깅 기능 등에 이용

<!-- DB에 관한 설정 -->
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/spring/application-context.xml
  </param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

🔥 DataSource

: JDBC 명세의 일부분이면서 일반화된 연결 팩토리
: DB와 관계된 connection정보를 담고 있으며 bean으로 등록하여 인자를 넘겨줌


  • JDBC properties
# db setting

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?serverTimeZone=Asia/Seoul
jdbc.username=root
jdbc.password=1234
jdbc.initialSize=5
jdbc.maxActive=20

🔥 Spring 환경 설정

  • application-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

	<!-- Database 설정 -->
	
	<!-- DB 설정파일 loading -->
	<bean id="propertyConfigure" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:properties/jdbc.properties</value>			<!-- classpath : src/main/java -->
			</list>
		</property>
	</bean>
	
	<!-- DBMS(DataBase Management System) : DataSource를 bean으로 등록 -->
	<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}" />
		<property name="initialSize" value="${jdbc.initialSize}" />
		<property name="maxActive" value="${jdbc.maxActive}" />
		<property name="minIdle" value="${jdbc.initialSize}"></property>	<!-- 최소사이즈를 초기값으로 설정 -->
		<property name="maxWait" value="3000" />							<!-- 대기시간이 최대3초 -->
		<property name="poolPreparedStatements" value="true" />
		<property name="maxOpenPreparedStatements" value="50" /> 			<!-- 동시에 접속했을 때 가져갈 수 있는 최대 개수 -->
	</bean>
	
	<!-- mybatis 설정 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />						<!-- ref: refernce. 참조 -->
		<property name="mapperLocations" value="classpath:sqls/*.xml" />	<!-- mapper의 경로 -> sqls경로 안에 있는 모든 xml파일 -->
	</bean>
	
	<!-- sqlSession 취득 -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
		<constructor-arg index="1" value="SIMPLE" />
	</bean>
	
	<!-- jdbc 설정 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
</beans>

🔥 Mapper 추가

: SQL 쿼리문을 작성할 mapper를 추가한다 ( xml파일 이용 )

  • namespace : 여러개의 SQL문을 묶는 용도로 사용 (경로)
  • parameterType : SQL문의 입력 parameter
  • resultType : select문 실행 결과를 담을 객체
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="경로">
  <!-- sql 쿼리문 작성 -->
  <select id="" parameterType="" resultType="">
    <!-- select문 작성-->
  </select>
</mapper>

인터페이스를 사용한 방법은 아래 블로그를 참조
https://codevang.tistory.com/263



출처

https://velog.io/@arielgv829/Spring-SpringJDBC
https://hoonmaro.tistory.com/31

profile
🦋개발 공부 기록🦋

0개의 댓글

관련 채용 정보