Spring_마이바티스

인삼주·2023년 8월 30일
0

spring

목록 보기
12/22
/*
	 * 	12장 마이바티스
	 * 		
	 * 		# What?
	 * 			
	 * 			마이바티스는 자바 퍼시스턴스 프레임워크의 약자로 XML 서술자나 어노테이션을 사용하여 저장 프로시저나 SQL문으로 객체들을 연결시킨다.
	 * 			마이바티스는 Apache 라이선스 2.0으로 배포되는 자유 소프트웨어다.
	 * 	
	 * 		# 마이바티스를 사용함으로써 얻을 수 있는 이점
	 * 
	 * 			- SQL의 체계적인 관리
	 * 			- 자바 객체와 SQL 입출력 값의 투명한 바인딩
	 * 			- 동적 SQL 조합
	 * 
	 * 		# 마이바티스 설정
	 * 		
	 * 			- 의존관계 정의(pom.xml)
	 * 				> mybatis
	 * 				> mybatis-spring
	 * 				> spring-jdbc
	 * 				> commons-dbcp2
	 * 				> log4jdbc-log4j2-jdbc4
	 * 				> ojdbc6s or 8
	 * 
	 * 			- 스프링과 마이바티스 연결 설정 (root-context.xml 설정)
	 * 				> dataSource
	 * 				> sqlSessionFactory
	 * 				> sqlSessionTemplate
	 * 				> basePackage
	 * 
	 * 			- 마이바티스 설정 (mybatisAlias.xml 설정)
	 * 				> 마이바티스의 위치 설정은 root-context.xml의 sqlSessionFactory 설정할 때 property 요소로 적용
	 * 		
	 * 		# 테이블 생성
	 * 			
	 * 			- board, member, member_auth 테이블 생성
	 * 
	 * 
	 */
     
  1. 의존관계 정의(pom.xml)
		<!-- Datebase 라이브러리 등록 시작  -->
		<!-- XML로 쿼리를 작성하게 해주는 라이브러리 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.10</version>
		</dependency>
		
		<!-- 스프링과 mybatis를 연동하게 해주는 라이브러리 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.4</version>
		</dependency>		
		
		
		<!-- 스프링에서 JDBC (java Database Connectivity -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>		
		
		<!-- 
			dbcp 설정
			database connection pool => 커넥션 객체를 미리 만들어놓고 쓰고/반납, 최근에서 hikaricp를 사용하는 경우도 있음
		 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>2.7.0</version>
		</dependency>
		
		<!-- 로깅을 위한 라이브러리, 쿼리를 console이나 파일 로그로 볼 수 있음 -->
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
			<version>1.16</version>
		</dependency>				
		
		<!-- oracle java database connectivity 드라이버 -->
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>21.1.0.0</version>
		</dependency>
		<!-- Datebase 라이브러리 등록 끝  -->
  1. 스프링과 마이바티스 연결 설정 (root-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"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
    	
    	<!-- Root Context: defines shared resources visible to all other web components -->
    	<!-- 
    		root-context.xml : 스프링 설정을 위한 파일
    		
    		스프링 설정이란?
    		- view와 관련되지 않은 객체를 정의
    		- Service(비즈니스 기능), DAO(Repository: 저장소), DB 등 비즈니스 로직과 관련된 설정
    		- BasicDataSource dataSource = new BasicDataSource();
    		  dataSource.setDriverClassName() = "oracle.jdbc.driver.OracleDriver";
    	 -->
    	 
    	 <!-- dataSource : 데이터베이스와 관련된 정보를 설정한다. -->
    	 <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    	 	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    	 	<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
    	 	<property name="username" value="dev"/>
    	 	<property name="password" value="java"/>
    	 </bean>
    	 
    	 <!-- 
    	 		데이터베이스와 연결을 맺고 끊어질 때까지의 라이프 사이클을 관리해주는 SqlSessionTemplate 객체를 생성
    	 		1) dataSource
    	 		2) Mapper xml의 위치 지정(- /src/main/resources/) > 우리가  sqlmap 생성해야한다.
    	 		3) mybatis config 설정 xml 위치 지정 > 우리가 mybatisAlias.xml 생성해줘야한다
    	  -->
    	 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    	 	<property name="dataSource" ref="dataSource"/>
    	 	<property name="mapperLocations" value="classpath:/sqlmap/**/*_SQL.xml"></property>
    	 	<property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml"></property>
    	 </bean>
    
    	<!-- 
    		데이터베이스에 개별적으로 쿼리를 실행시키는 객체.
    		이 객체를 통해서 query를 실행한다.
    	 -->	 
    	 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    	 	<constructor-arg name="sqlSessionFactory" index="0" ref="sqlSessionFactory"/>
    	 </bean>
    
    	<!-- 
    		Mapper 인터페이스 설정
    		개발자가 직접 DAO를 설정하지 않아도 자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게 된다.
    		DAO 역할을 대신할 Mapper 인터페이스의 위치를 알려준다.
    	 -->	 
    	 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	 	<property name="basePackage" value="kr.or.ddit.mapper"></property>
    	 </bean>
    </beans>

2-1. Mapper xml의 위치 지정(- /src/main/resources/) > 우리가 sqlmap 생성해야한다.

2-2. mybatis config 설정 xml 위치 지정 > 우리가 mybatisAlias.xml 생성해줘야한다.

0개의 댓글