ss__jae2
타닥타닥 IT
ss__jae2
전체 방문자
오늘
어제

Github

  • 타닥타닥 IT (179)
    • 웹개발 (86)
      • JAVA (23)
      • DBMS (6)
      • HTML (9)
      • CSS (7)
      • JavaScript (12)
      • JSP (14)
      • Spring (15)
    • FrontEnd (63)
      • HTML (5)
      • CSS (12)
      • JavaScript (16)
      • React.js (14)
      • Node.js (16)
    • API (5)
    • SQLD (21)
      • SQLD (1)
      • 1과목 데이터 모델링의 이해 (11)
      • 2과목 SQL 기본 및 활용 (9)
    • CS Study (4)
      • 네트워크 (4)

공지사항

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
ss__jae2

타닥타닥 IT

[JSP] MyBatis
웹개발/JSP

[JSP] MyBatis

2022. 5. 27. 15:06
반응형

1. MyBatis

- 모델(객체)과 DB(테이블)의 매개체 역할의 프레임워크 - ORM(Object Relational Mapping)

- Java 소스코드 안에 SQL문을 작성하면 코드가 길어지고 섞여 있어서 유지보수 및 분업이 어려움

- MyBatis는 기존 JDBC 방식과는 달리 SQL문을 XML 파일에 작성함으로써 코드가 줄어지고 SQL문 수정이 편함

- 또한 DBCP를 사용하여 커넥션을 여러개 생성하기 때문에 JDBC만 사용하는 것보다 작업 효율과 가독성이 좋아짐

 

iBatis(jdk 1.4이상부터 지원) -> MyBatis(jdk 1.5이상부터 지원)

- iBatis와 MyBatis의 차이점은 몇 개의 문법 및 사용용어(명칭, 단어) 변경 등이 있음

  • MyBatis 설치
    https://blog.mybatis.org
     

    The MyBatis Blog

    A blog about the the MyBatis data mapper framework.

    blog.mybatis.org

    -> Products -> MyBatis3 Download -> 맞는 버전 다운로드
  • MyBatis 한국어 설명
    https://mybatis.org/mybatis-3/ko/index.html
     

    MyBatis – 마이바티스 3 | 소개

    마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와

    mybatis.org

    - 필요한 코드나 사용법 설정 코드 등을 여기서 찾아서 사용하면 좋다.

2. MyBatis 작동원리

① SqlSession을 만들어 내기 위한 설계도를 작성한다.(config.xml) 이 때 나중에 필요한 mapper 위치도 작성한다.

② SqlSessionFactoryBuilder는 Reader와 함께 SqlSessionFactory를 생성하기 위한 MyBatis 구성파일(config.xml)을 읽는다.( 이 구성파일은 xml형식, java 형식 등 다양한 형식일 수 있다. )

③ 클라이언트(사용자가 아닌 MyBatis를 사용하는 개발자)가 응용 프로그램에 대한 프로세스를 요청한다.

④ Application은 SqlSessionFactoryBuilder를 사용하여 빌드된(build()) SqlSessionFactory에서 SqlSession을 가져온다.(openSession())

⑤ Application이 SqlSession에서 Mapper 인터페이스 구현 개체를 가져온다.

⑥ Application이 Mapper 인터페이스의 메소드를 호출한다.

⑦ Mapper 인터페이스의 구현 개체가 SqlSession 메소드를 호출하고 SQL문 실행을 요청한다.

⑧ SqlSession은 Mapping 파일에서 실행할 SQL문을 가져와서 실행한다.

3. MyBatis 실제 사용

- 먼저, MyBatis를 사용하기 위해서는 lib와 Build Path에 jar파일을 추가해줘야 한다.

  • MyBatis 구성파일(config.xml)

    config.xml
  • SqlSessionFactory 생성

    SqlSessionFactory
  • SqlSession 생성

    SqlSession

    - 설계도에 위치 해놓은 mapper를 찾아가서 위치를 찾음
    sqlsession.selectOne("User.checkId", userid);
    - 결과의 반환이 한 행인 select 문에 대한 메소드이고 User.checkId는 User라는 namespace를 가진 mapper 태그 중에서 id가 checkId인 태그로 찾아가겠다는 뜻이며 뒤에 있는 userid는 보내는 값이다. 
    - 여러 개의 상관없는 값을 매개변수로 보낼 때에는 HashMap을 이용해서 보내는 것이 좋다

  • 실제 SQL문이 적혀 있는 mapper 생성(XML파일)

    user.xml
    - 각각 태그 안에서 객체를 받을 때 필드값이 아니라 getter를 받아온다.
    - 그래서 배열로 받는 값을 받을 때는 DTO 파일에 따로 한 문자열로 만드는 getter를 만드는 게 좋다.

* mapper에서 사용하는 문법

- " " 가 있어야 되는 것이면 #{ }

- " " 가 없이 사용하는 것이면 ${ }

반응형
저작자표시 (새창열림)

'웹개발 > JSP' 카테고리의 다른 글

[JSP] MVC Model, Front-Controller 패턴, Model2의 페이지 이동 방식  (0) 2022.06.02
[JSP] EL문과 JSTL문  (1) 2022.05.28
[JSP] 회원가입 유효성 검사, 비밀번호(정규식) 검사  (0) 2022.05.26
[JSP] 다양한 세션 이용  (0) 2022.05.26
[JSP] DBCP(Database Connection Pool)  (0) 2022.05.25
    '웹개발/JSP' 카테고리의 다른 글
    • [JSP] MVC Model, Front-Controller 패턴, Model2의 페이지 이동 방식
    • [JSP] EL문과 JSTL문
    • [JSP] 회원가입 유효성 검사, 비밀번호(정규식) 검사
    • [JSP] 다양한 세션 이용
    ss__jae2
    ss__jae2

    티스토리툴바