Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/8월

22.08.30 - [ Mybatis ] 시작하기, config파일, mapper파일, SqlSession

giggs 2022. 9. 3. 21:39

 

 

 

-- INDEX --

 

 

1. Mybatis란? 2. 라이브러리
연결
3. 설정.xml파일 4. <configuration> 5. SqlSession
퍼시스턴스 프레임워크
매핑
xml, 애노테이션
jar파일  연결 SouceFolder
하위에 생성
settings
typeAliases
environments
mappers
SS팩토리빌더
SS팩토리
SqlSession

 

 

 

 


 

 

1. Mybatis 란? 

 

 

 

 

퍼시스턴스 프레임워크(Persistence Framework)

  • 퍼시스턴스 == 영속성 ( 데이터를 생성한 프로그램의 실행이 종료되도 사라지지않는 데이터의 특성을 의미 )
  • 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합
  • 간단한 작업으로 데이터베이스와 연동되는 시스템을 개발하고 안정적인 구동을 보장하므로
  • JDBC프로그래밍의 복잡함과 번거로움을 해소해줄 수 있다.

 

 

종류

  • SQL문장으로 직접 DB데이터를 다루는 SQL 맵퍼 
  • 자바 객체를 통해 간접적으로 DB데이터를 다루는 객체 관계 맵퍼(ORM)

 

 

Mybatis는 SQL 맵퍼

  • 가장 큰 장점은 매핑구문으로 SQL을 작성하는데 집중하도록 만들어졌다. 다이나믹한 쿼리에 좋다.

 

 

 


 

 

 

 

2. Mybatis 라이브러리 연결하기

 

https://giggs.tistory.com/244

 

Mybatis 라이브러리 jar 파일 설치 및 서버와 연결하기

-- INDEX -- 1. MyBatis 공식홈페이지에서 MyBatis - jar 파일 다운받기 2. MVN 페이지 통해 MyBatis - jar 파일 다운 받기 3. 다운 받은 파일 서버와 연결하기 1. Mybatis 공식 홈페이지 통해서 jar 파일 다운 받..

giggs.tistory.com

 

 

 

 

 


 

 

 

 

3. Mybatis 공장 세우기 - Mybatis 설정.xml 파일 만들기

 

 

 

3-1 : 경로주의 - [ Sorce Folder ] 하위에 [ 설정.xml ] 파일 만들기

  • 프로젝트 최상단에 위치하도록 Sorce Folder를 새로 만들고
  • 그 하위에 설정.xml 파일 만들어서 작업 시작하기 

 

 

 

 

 


 

 

3-2 : 설정 파일 내용은 Mybatis 공식 홈페이지 내용 참고해서 만들기

  • DOCTYPE 과 .dtd 연결이 핵심
  • 참조문서 ( .dtd ) 지정 완료되면 자동완성 지원된다.

 

 

 

 

 

#1 - 현재문서가 xml문서이다.

#2 현재문서의 타입은 configuration 문서이다 ( 설정문서이다 )

#3 - 어떤문서를 참조해서 만들어지는건지 써주기 ( 오류검사나, 자동완성 기능 지원됨)

#4 - <configuration> 태그로 전체 감싸주어야한다.

 

 

 


 

 <configuration>

안쪽 내용은 내 설정에 맞게 수정 / 삭제 / 추가 해서 사용

</configuration> 

 

 

 


 

 

 

4. <configuration> 에서 설정해 주어야 하는 것들

  • <settings> :: 기본 세팅 선언 - 이런 경우에는 이러이렇게 해라 하는 내용들 설정
  • <typeAliases> ::객체에 대한 별칭 설정 - 클래스의 전체 경로대신 별칭을 지정해서 사용 가능
  • <environments> :: DB 연결과 관련한 정보 설정
  • <mappers> :: DB에 사용되는 쿼리문들이 담겨있는 xml파일과 - 설정.xml파일의 매핑

 

 


 

 

4-1 : < settings> 

  • < settings> <setting name = " 이런상황에서는 " value  " 이렇게해라 " > </settings>
  • 이런 경우에는 이러이렇게 해라 하는 내용들 설정 가능
  • <settings> 안에 <setting> 여러개 추가 가능

 

 

 

 

 

#1 - 데이터가 null로 전달이 되었으면 빈칸으로 인지하지말고 null로 인식해라 (  NULL은 무조건 대문자로 )

#2 -  스네이크 케이스 형태의 A_COLUMN을 --> 카멜 케이스 형태의 aColumn으로 자동으로 매핑해줌

 

 


 

 

 <settings>에 설정 가능한 <setting>  살펴보기 - 공식홈페이지 참고

 

 

https://mybatis.org/mybatis-3/ko/configuration.html#settings

 

MyBatis – 마이바티스 3 | 매퍼 설정

매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할

mybatis.org

 

 

 


 

 

 

4-2 : < typeAliases> 

  • <typeAliases> <typeAlias type = " 클래스전체경로 " alias = " 지정할별칭 " / > 
  • 클래스명의 전체 경로 대신 내가 지정한 별칭으로 사용가능
  • resultType , parameterTpye 지정 등 - 필요한 곳에 사용 가능

 

 

 

 


 

 

 

4-3 : < environments >

 

1. <environments default = " 기본적으로 실행될 environment 지정 ">

2. <environment id = " 지금만드는 environment의 식별자 ">

3. <transactionManager type=" 오토커밋 설정여부 지정 " >  - JDBC 또는 MANAGED

4. <dataSource type = " 커넥션 pool 사용여부 지정 " > - POOLED 또는 UNPOOLED

5. <property> - db설정 필요한 내용들 작성

 

 

 

 

 

 

 

<environments default="이름"> : 여러개의 environment 중 기본으로 연결할 정보를 설정

  • 여러개의 environment를 집어 넣으면 여러개의 DB에 연결할 수 있고
  • <environment id="이름"> 으로 구분 가능

 

 

 

<transactionManager type="JDBC"> : 트랜잭션을 제어를 누가 할 것인가에 대한 설정

  • JDBC : JDBC가 커밋/롤백을 직접 처리하기 위해 사용(수동 commit)
  • MANAGED : 트랜잭션에 대해 직접적인 영향을 행사하지 않는 것 의미(자동 commit)

 

 

 

<dataSource type="POOLED"> : 실제 DB접속에 관한 정보를 넣는 태그

  • type : ConnectionPool을 사용할건지에 대한 여부
  • UNPOOLED : Connection객체를 별도로 저장하지 않고 객체 호출 시 매번 생성하여 사용
  • POOLED : 최초 Connection객체를 생성할 때 그 정보를 pool 영역에 저장해두고 이후 재사용 가능

 

 

 


 

 

4-4 : < mappers > 

  • < mappers > < mapper resource = " xml파일 경로 " / >
  • 경로 체크
  • 쿼리문을 담아놓은 매퍼.xml파일들도
  • 최상단 경로로 만들어 놓은 souceFolder 하위에 만들어주자.

 

 

 

 


 

 

# <mapper> resource에 연결해 놓은 mapper.xml 파일 생성하기

 

 

https://giggs.tistory.com/250?category=936216 

 

[ Mybatis ] - mapper.xml 파일 만들고 Mybatis와 매핑하기

-- INDEX -- 1. Mapper 파일이란? 2. 실행 방식 체크 3. 생성 경로 체크 4. Mybatis와 매핑하기 5. Mapper파일 생성하기 6. 쿼리 작성 방법 7. 쿼리 작성해보기 DB에 사용되는 쿼리문 담겨있는 xml파일 Mybatis와..

giggs.tistory.com

 

 

 

 


 

 

 

 

5. SqlSession 

 

 

 

5-1 : Connection 객체가 아닌 SqlSession 객체 사용한다.

 

 


 

 

5-2 : SqlSession을 얻어오는 방법은?

 

 

 

즉, 우리가 최종적으로 필요한 SqlSession을 얻어오기위해

SqlSessionFactoryBuilder를 만들어야지 얻어올 수 있다.

 

new SqlSessionFactoryBuilder(); 하면 빌더 만들 수 있다.

SqlSessionFactoryBuilder는 그냥 만들면 안되고, 설정 값을 주어야한다.

팩토리빌더를 잘 만들어주면 팩토리 얻어오고 SqlSession 얻어오면된다.

 

 

 


 

 

5-3 : config.xml 문서를 통해 SqlSession 팩토리빌더를 만들어주어야한다.

 

  • java코드가 아닌xml 문서를 통해서 만들어 주어야한다.
  • 팩토리빌더를 만드는 xml 파일 내용은 공식 홈페이지 'XML SqlSessionFactory 빌드하기' 참조

 

 

 


 

 

 

 

  1. xml 파일을 만들고 ㅡ [ Mybatis 설정관련 config.xml 파일 만들기 ]
  2. Resource 인풋스트림을 활용해서 ㅡ [ config.xml 파일과 연결시켜주기 ] [ 설정된 내용을 바탕으로 만들것이므로 ]
  3. 빌더를 만들고 ㅡ [ new SqlSessionFactoryBuilder()
  4. 빌더로 팩토리를 만들고 ㅡ [ new SqlSessionFactoryBuilder().build(inputStream) ]
  5. 팩토리로 sqlSession 객체를 만들기 ㅡ [ SqlSession ss = sqlSessionFactory.openSession(false) ]

 

 


 

 

5-4 : DAO에서 namespace에 매핑된 xml파일 찾아갈 수 있는 이유

  • SqlSession을 이용해서 – SqlSession을 얻어오는 과정에서 resource에서 config를 참조하여 만들어져 있으므로!
  • config 설정 파일 가서 mapper 에 매핑된 xml파일찾아가서 – namespace와 sql id이용하여 실행할 수 있는 것!

 

 


 

 

 

 

6. 최종 정리

 

0. 라이브러리 준비
     - mybatis.jar (mvn repo || 공식문서의 깃허브)
     - ojdbc.jar

 

 

1. 설정파일 작성 (SqlSessionFactoryBuilder 를 위한)
     - source folder 만들기
     - mybatis-config.xml 문서 작성
     - DTD 
     - 마이바티스 설정 정보 작성(공식문서 참조)

 

 


2. SqlSession 얻기 (SqlSessionFactoryBuilder -> SqlSessionFactory -> sqlSession)
    -  xml 문서를 이용하여 (빌더->팩토리->세션) 얻기 //SqlTemplate 파일에 static 으로 작성

 

 

3. SQL 실행
    - DML | SQL 
    - ss.xxxxx("네임스페이스.식별자" , "물음표를 채울 데이터");

 

 


4. mapper 파일 작성
    - source folder > mapper > member-mapper.xml 파일 생성
    - dtd 작성 //공식문서 참조
    - mapper 태그 작성 및 내용 채우기
     - SQL구문 태그 (<insert | update | delete | select>)
     - resultMap 태그 

 

 


5. mapper 파일 등록
    - mybatis-config.xml 에 mapper 등록