JSP day02 09/24 - MyBatis

jjade·2025년 9월 24일
0

MyBatis(프레임워크) - ORM

자바에서 DB를 처리하는 방법 : JDBC

  • JDBC는 너무 복잡하고 비효율적!

config

  • 설정 정보 객체
  • SQL 설정 정보들을 config에 따로 정리해놓음
    id : hr, password : 1234 , local

config의 정보들을 읽어와서 SQL Session 객체를 만들기 위한 준비를 함

SQL Session Factory Builder

  • SQL Session 객체를 만들기 위한 준비

데이터 요청전

  • config의 정보를 들고옴
  • 그 정보 SQL Session Factory Builder에서 읽음
  • SQL Session 객체를 만들어 놓음
  • SQL Session 객체는 쿼리가 없음
  • DB에 접근할 수 있는 정보들만 가지고 있음

SQLSession 객체

  • SQL에 접근하는 객체
  • insert(), update(), delete(), selectOne(), selectList() 메서드를 통해 Mapper XML에 등록된 SQL을 실행할 수 있음.
ProductVO product = sqlSession.selectOne("product.select", 1L);

Mapper

  • 작성된 쿼리들이 모여져있음
  • login 요청이 들어오면 login관련된 쿼리들을 미리 작성해놓음
  • SQL 쿼리를 변수에 담아놓음

    변수에 담은 이유 : DAO에서 그 변수를 호출하기 위해

insert라는 변수에 INSERT SQL 담기

```<insert id="insert" parameterType="ProductVO">
	INSERT INTO TBL_PRODUCT
	VALUES(SEQ_PRODUCT.NEXTVAL, #{productName}, #{productPrice},#{productStock})
```

Mapper 파일을 다른 객체가 참조해서 가져다 쓰도록 함
Mapper.modify : 이 쿼리를 DAO가 날림


쿼리를 담은 변수를 SQL Session에 넘겨줌
-> 언제든지 쿼리를 빠르게 넘겨줄 수 있음

config정보를 읽어와서 SQL Session Factory Builder가
SQL Session을 만듦

요청전

  • SQL Session객체를 만들 준비를 함

요청 후

  • 톰캣은 요청에 맞는 객체를 깨움
  • Mapper에 있는 쿼리를 들고 SQL Session객체와 DB에 빠르게 쿼리를 날릴 수 있는 준비를 함

JNDI

  • 외부의 파일들의 정보를 읽어오는 기술

DBCP

  • DB에 접근할 수 있는 Connect 객체들만 있음

MyBatis = JNDI + DBCP

  • Mapper에서 쿼리들을 login, logout 변수에 각각 담아놓음
  • 세션 객체는 login, logout 변수들의 이름을 호출해서 SQL의 쿼리들을 실행하도록 함

순서

  1. SQL Session객체를 만들어야 함
  2. DB에 접근할 수 있는 쿼리를 분리함
  3. 쿼리들을 Mapper에 변수처럼 담아놓음

DB에 ProductVO만 넘기면 productName, ProductPrice가 알아서 Insert 됨

config.xml에 mapper의 위치를 알려줘야 함

쿼리 스트링

웹 브라우저나 다른 클라이언트가 서버에 요청하는 URL , ? 뒤에 오는 키=값 형태의 문자열

  • 쿼리 스트링을 써야 사용자들의 요청 데이터를 그대로 들고 갈 수 있음

0개의 댓글