Spring 개발환경 세팅(3) MyBatis 설치

Jieun·2023년 4월 24일
0

📝 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


1. JDBC, Spring, Mybatis 관련 모듈, 라이브러리 추가

  • 07_Framework\spring 관련 모음\설정관련 xml 파일 모음\
    2_pom.xml dependency 추가 설정.txt의 사본\ 열어서
    dependencies 안에 아래 구문 추가 후 저장.
  1. JDBC 드라이버 (ojdbc11)
    https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11
  2. Spring에서 JDBC지원하는 모듈 (spring-jdbc)
    https://mvnrepository.com/artifact/org.springframework/spring-jdbc
  3. Mybatis 라이브러리 (mybatis)
    https://mvnrepository.com/artifact/org.mybatis/mybatis
  4. Spring에서 쉽게 Mybatis를 사용 가능하게 만드는 모듈(spring-mybatis)
    https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
  5. 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>

2. Mybatis 설정용 xml 파일 DTD(Document Type Definition) 추가

  • window - Preferences - xml검색 - XML Catalog- 오른쪽 User Specified Entries 클릭 - add 클릭
  • 밑에 내용에 맞게 Config 먼저 넣어주고 [ok]클릭
  • Mapper도 똑같은 방식으로 써주고 [ok]클릭

다하면 안에 2개 채워짐


3. mybatis-config.xml 생성

  • src/main/resources -mybatis-config.xml파일 생성
  • 그림 순서대로 체크체크하기



4. mybatis-config.xml 안에 설정 3개 작성하기

  • 무조건 아래 순서대로 적어주기. 틀리면 오류나거나 실행안됨
<!-- 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>

5. root-context.xml 설정해주기

root-context.xml 파일

  • web.xml에서 가장 먼저 읽어 들이는 설정 파일.
  • 프로젝트 전반적으로 사용되는 자원을 생성(bean 등록)하고 설정하는 파일
  • DB 연결 관련 정보, 트랜잭션 처리, 파일 업로드 등을 작성
<?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>
  • 콘솔창 부분에 Namespaces 클릭
  • 리스트에 tx부분 체크박스 체크 후 ok
  • 오류 뜨던 tx부분 빨간 오류 안뜸

  • root-content.xml 파일에 tx구문 추가됨

그럼 root-contet.xml 설정 끝!!!!!


6. mapper.xml 생성

  • src/main/resources폴더에 mappers 폴더 생성 - mapper.xml 파일 생성
  • 아래 그림 순서대로 클릭클릭하기

❗ mapper 파일 생성시 반드시 해야되는 것!!!

1. cache-ref 태그 삭제 // 안지우면 에러남

2. mapper 태그에 namespace 속성 추가
namespace : 해당 파일을 쉽게 부르는 이름 (DAO에서 사용)


7. mybatis-config.xml 가서 mapper 경로 설정해주기

  • SQL이 작성되는 mapper 파일 위치를 등록
  • <mapper resource="mapper 파일 경로"/>
    경로를 작성하는 기준(시작지점)은 src/main/resources 폴더 기준

profile
👩‍💼👩‍💼➡️➡️➡️👩‍💻👩‍💻 생산자의 삶을 살기 위해 개발공부중

0개의 댓글