Idea에 정리한 myBatis working procedure 리마인드.

 

(0) config.xml로 connection pool 생성 해준 후, mapper.xml 관련 정보를 포함시켜준다.

(1) UserMain 사용자 입력 받기

public void menu() {
		UserService userService = null;
		Scanner scan = new Scanner(System.in);
		int num = 0;
		
		while(true) {
			System.out.println();
			System.out.println("*************");
			System.out.println("       1. 입력");
			System.out.println("       2. 출력");
			System.out.println("       3. 수정");
			System.out.println("       4. 삭제");
			System.out.println("       5. 검색");
			System.out.println("       6. 끝");
			System.out.println("*************");
			System.out.print("    번호 : ");
			num = scan.nextInt();

 

(2) UserService로 넘어간다. 

 

UserService 는 각 메서드를 가진 insert, delete, search, selectservice 자바 페이지의 인터페이스가 들어간다.

- mvc에서 servlet 쓰다오니까 헷갈린다. usermain -> userservice -> userinsertservice -> userDAO 순이다.

package user.service;

public interface UserService {
	public void excute();
}

(3) UserInsert/Delete/Update/SearchService 

 

UserMain에서 사용자 입력값은 else 조건문으로 받았고, DAO를 통해 database에 값을 저장시킨다.

각 service 클래스의 execute를 불러와서 실행시킨다.

public class UserInsertService implements UserService {

	@Override
	public void excute() {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("이름 :");
		String name = scan.next();
		
		System.out.print("아이디 :");
		String id = scan.next();
		
		System.out.print("비밀번호 :");
		String pwd = scan.next();
		
		//name, id pwd를 UserDTO에 담기
		UserDTO userDTO = new UserDTO();
		userDTO.setName(name);
		userDTO.setId(id);
		userDTO.setPwd(pwd);

		//DB
		UserDAO userDAO = new UserDAO();
		userDAO.write(userDTO);
		
		//응답
		System.out.println("데이터를 저장하였습니다.");
	}

}

 

(4) Data access object 구동 방식.

DB 직접 접근 안하고 간접적으로 datasource에 요청하는것 확인

	public UserDAO() {
		try {
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); // src 라는 말은 default로 설정되어있다
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

 

'Database > myBatis' 카테고리의 다른 글

Core Idea.  (0) 2022.05.25

myBatis - Software Framework.

framework 란, 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조를 말한다. 

myBatis는 그중에서도 ORM으로 분류되는데 ORM은 Object Relational Mapping의 약자로써 오브젝트와 관계형 데이터벵크의 데이터를 자동으로 매핑해주는 것으로 이해

 

 

1. 특징

 

(1)   쿼리문, 예외처리, 트랙잭션 관리들을 XM 형식으로 관리. XM은 확장자를 말한다. 

(2)   쉽고, 간단하고, 의존성 줄이기라는 세가지 목표를 갖음.

       sql문과 자바 코드 분리하여 자바 개발하는 쿼리문을 신경쓰지 않아도 된다.

(3)   SQL를 자바코드와 분리, SQL 문 수정이 있을때마다 자바를 변경/컴파일 하지 않아도 된다.

 

2. 설치

 

(1)   https://blog.mybatis.org 

 

The MyBatis Blog

A blog about the the MyBatis data mapper framework.

blog.mybatis.org

(2)   product -> 3.5.7 (필요한 버전) -> mybatis 3.5.7 download -> java_ee (필요한 폴더에 압축 풀기)

(3)   압축 해제한 폴더에 보면 파일 4가지가 들어있다. (License, mybatis, mybatis jarfile, notice) -> jarFile만 사용

(4)   사용 방법 :

eclipse에 자바 프로젝트 open -> lib파일을 만들어준다 -> ojdbc, jar, mybatis 세 개 파일을 넣어준다. 

-> 넣은 파일 세가지 스크롤해서  마우스 우클릭, Build path 설정해준다 ->reference libraries 생성된 것 보이면 설정완료

 

 

3. myBatis 작동 순서

UserMain -> UserService -> UserInsertService -> UserServie ->         userDAO / MVC 처럼 servlet을 거치지 않는다.

 

UserInsert Service -> userDAO ->userMapper.xml로 myBatis가 연결되는 모습

 

4. myBatis 환경설정 

 

mybatis-config.xml

 

(1) Connection Pool

=> 서버에 미리 Connection 만들어 놓는 것. 구동시 마다 켜지 않아도 되기 떄문에 시간적인 면에서 효율적이다.

=> driver, username, password 등 jsp header에 일반적으로 기입되었던 정보들을 의미함

 

(2) mapper.xml (sql) 정보를 포함하고 있어야 한다.

(3) 별칭 필요 / 이름이 너무 길다면 짧게 만들 수 있다.

(4) 메모리의 크기를 조정할 수 있다.

 

 

5. myBatis 구조 

(1) myBatis에 접근하기 위해선 sqlSession 객체가 필요하다

(2) SqlSessionFactory를 통해 sqlSession를 생성한다. => 일반적으로는 DAO 에서 sqlSession을 생성해주면 된다.

 

6. 데이터를 꺼내오는 과정

 

(1) dataSource를 통해서 data들을 꺼내온다.

dataSource는 은행 직원이라고 생각하면된다. 직접 DB에 접근은 못하지만 간접적으로, dataSource에 요청되고

dataSource가 DB접근후 데이터를 꺼내온다.

 

7. myBatis Mapper Interface 

- 를 통해서 DB접근

basic structure below

 

'Database > myBatis' 카테고리의 다른 글

myBatisTest / drill  (0) 2022.05.26

+ Recent posts