<!-- 데이터베이스 라이브러리 의존 관계 정의시작 -->
<!-- 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>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.1.0.0</version>
</dependency>
<!-- 데이터베이스 라이브러리 의존 관계 정의끝 -->
해당 의존성 주입 한 후 Maven update 진행

<aside> 💡 ✅ view와 관련되지 않은 객체를 정의
✅ Service(비즈니스 기능), DAO(Repository: 저장소), DB 등 비즈니스 로직과 관련된 설정
✅BasicDataSource dataSource = new BasicDataSource();
✅ dataSource.setDriverClassName() = "oracle.jdbc.drive.OracleDriver";
</aside>
<!-- 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의 위치 선정
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:/sqlmap/**/*_SQL.xml"/>
<property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml"/>
</bean>
<!--
데이터베이스에 개발적으로 쿼리를 실행시키는 객체
이 객체를 통해서 query를 실행한다.
-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" index="0" ref="sqlSessionFactory"/>
</bean>
<!--
Mapper 인터페이스 설정
개발자가 직접 DAO를 설정하지 않아도 자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게된다.
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="kr.or.ddit.mapper"/>
</bean>
mybatisAlias.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"<https://mybatis.org/dtd/mybatis-3-config.dtd>">
<configuration>
<!--
[마이바티스] 스프링에서 "_"를 사용한 컬럼명 사용 시 (BOOK 테이블의 BOOK_ID와 같은 컬럼)
카멜케이스로 읽어주는 역할(bookId와 같이)
ex) 테이블 컬럼명이 member_id인 경우 jsp화면단에서 이 값을 사용시 memberId로 사용할 수 있다.
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 자주 사용하는 타입의 별칭을 셋팅 -->
<typeAliases>
<!-- <typeAlias type="클래스명(패키지구조를 포함한)" alias="별칭명"/> -->
</typeAliases>
</configuration>
sqlmap 폴더 생성 후 blank_SQL.xml 을 생성하는 이유