📝 service, dao 생성, Mybatis 설치 후 mapper
#230424
💻 작업파일
comm/pom.xml
[src/main/resources] - mybatis-config.xml
[src/main/resources] - [spring] - root-content.xml
[src/main/resources] - [mappers] - member-mapper.xml
- JDBC 드라이버 (ojdbc11)
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11- Spring에서 JDBC지원하는 모듈 (spring-jdbc)
https://mvnrepository.com/artifact/org.springframework/spring-jdbc- Mybatis 라이브러리 (mybatis)
https://mvnrepository.com/artifact/org.mybatis/mybatis- Spring에서 쉽게 Mybatis를 사용 가능하게 만드는 모듈(spring-mybatis)
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring- DataBase Connection Pool 사용을 위한 라이브러리(commons-dbcp2)
https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2
5개 라이브러리 내용 (230424기준)
<!-- JDBC 드라이버 (ojdbc11) -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc11</artifactId>
<version>21.5.0.0</version>
</dependency>
<!-- 스프링에서 JDBC를 사용할 수 있게 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
<!-- 위 properties의 지정한 Spring 버전을 따라감 -->
</dependency>
<!-- Mybatis 영속성 프레임워크 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- Spring - Mybatis 연결 모듈, 연결 역할을 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- 커넥션 풀 기능을 사용하기 위한 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.9.0</version>
</dependency>
window
- Preferences
- xml
검색 - XML Catalog
- 오른쪽 User Specified Entries
클릭 - add
클릭
- Config
Location : http://mybatis.org/dtd/mybatis-3-config.dtd
Key type : Public ID
Key : -//mybatis.org//DTD Config 3.0//EN
- Mapper
Location : http://mybatis.org/dtd/mybatis-3-mapper.dtd
Key type : Public ID
Key : -//mybatis.org//DTD Mapper 3.0//EN
다하면 안에 2개 채워짐
src/main/resources
-mybatis-config.xml
파일 생성
<!-- SqlSessionTemplate 관련 설정 -->
<settings>
<!-- insert / update 진행 시 null이 포함되어있는 경우
Mybatis는 기본적으로 error를 발생시키지만
해당 구문이 작성되면 지정된 value로 값을 insert/update 시킨다.
** 소문자 null은 오류 발생!! 무조건 대문자 NULL (마이바티스에서 오류뜸) **
-->
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<!-- 별칭 작성 부분 -->
<!-- VO클래스의 패키지명 + 클래스명 모두 작성하는 것이 불편하기 때문에 짧은 별칭 부여 -->
<typeAliases></typeAliases>
<!-- SQL이 작성되는 mapper 파일 위치를 등록 -->
<mappers></mappers>
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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components ->
<!--
root-context.xml 파일
- web.xml에서 가장 먼저 읽어 들이는 설정 파일.
- 프로젝트 전반적으로 사용되는 자원을 생성(bean 등록)하고 설정하는 파일
- DB 연결 관련 정보, 트랜잭션 처리, 파일 업로드 등을 작성
-->
<!-- 1. DBCP 사용을 위한 DataSource를 bean 등록 -->
<!-- DataSource : java에서 Connection Pool을 지원하기 위한 인터페이스 (Connection 상위호환 -->
<!-- destroy-method="close" : 주어진 세션을 자동으로 반환(close)하는 설정 -->
<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="community"/>
<property name="password" value="1234"/>
<!-- SQL이 수행된 후 자동으로 Commit 되는것을 지정 -->
<property name="defaultAutoCommit" value="false"/>
<!-- 커넥션 풀 설정 -->
<property name="initialSize" value="10" />
<!-- 초기 커넥션 수, 기본 0 -->
<property name="maxTotal" value="50" />
<!-- 최대 커넥션 수, 기본 8 -->
<property name="maxIdle" value="20" />
<!-- 유휴 상태로 존재할 수 있는 커넥션 최대 수, 기본 8 -->
<property name="minIdle" value="10" />
<!-- 유휴 상태로 존재할 수 있는 커넥션 최소 수, 기본 0 -->
<property name="maxWaitMillis" value="-1" />
<!-- 예외 발생 전 커넥션이 반환 될 떄 까지 대기하는 최대 시간(ms), 기본 -1(무기한) -->
</bean>
<!-- SqlSession : sql구문을 DB에 전달, 실행하는 객체
SqlSessionFactory : SqlSession을 만드는 객체
sqlSessionFactoryBean : mybatis 설정 파일(mybatis-config.xml)과
Connection Pool 정보를 이용하여 SqlSessionFactory를 만드는 객체
sqlSessionTemplate : SqlSession 객체에 트랜잭션 처리 역할이 가능하도록 하는 객체 -->
<!-- 마이바티스 SqlSession 등록하기 (xml 방식으로 bean 등록) -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- mybatis-config.xml 설정 불러오기 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- SqlSessionTemplate :
기본 SQL 실행 + 트랜잭션 관리 역할을 하는 SqlSession을
생성할 수 있게 하는 객체(Spring bean으로 등록해야함.) -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactoryBean" />
</bean>
<!-- 스프링에서 사용하는 proxy를 이용한 트랜잭션 제어가 안될 경우
추가적인 트랜잭션 매니저를 추가해서 문제 해결 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 트랜잭션 어노테이션을 쓸 수 있게 만들어주는 구문 -->
<!-- <tx:annotation-driven proxy-target-class="true"/> -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
src/main/resources
폴더에 mappers
폴더 생성 - mapper.xml
파일 생성1. cache-ref 태그 삭제 // 안지우면 에러남
2. mapper 태그에 namespace 속성 추가
namespace : 해당 파일을 쉽게 부르는 이름 (DAO에서 사용)
<mapper resource="mapper 파일 경로"/>