Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[웹] MyBatis 본문

[웹] MyBatis

코드와이 2021. 5. 1. 00:03

 

 

MyBatis

Mybatis는 JDBC를 대신한다.

 

JDBC기능 + Mybatis를 사용했을 때에 설정해 주어야 할 것들

  1. Driver Loading
    • driver class 설정 자동화 불가하다.
  2. Connection : database 연결
    • url, user name, user password를 모른다.
  3. sql 문장을 만들어라
    • 사용자가 원하는 작업(insert, select …)이 어떤 것인지 모르기 때문에 자동화 불가하다.
  4. pstmt를 만들고 값을 set 해라
    • ‘?’에 어떤 값을 넣을 것인지 모르기 때문에 자동화 불가하다.
  5. 실행
    • insert, update, delete는 자동화 가능(return int)하지만 select 는 return 타입을 모르기 때문에 자동화 불가하다.
  6. 다 사용했으면 close

1-6 번은 자바를 이용해서 db에 접근하려면 무조건 거쳐야하는 과정이다.

이 setting만 하면(xml에 setting) jdbc를 어떤 framework로 바꿀 수 있다. 이 글에선 그 중에서 mybatis를 다룰 것입니다.

위의 설명에서 o 설정을 제외한 모든 기능들을 mybatis가 자동으로 해준다.

 

 

mybatis : java object와 sql문 사이의 자동 mapping 기능을 지원하는 framework입니다.

sql을 별도의 파일로 분리해서 관리하고 object 와 sql 사이의 parameter mapping 작업을 자동으로 해줍니다.

 

driver, url, username, password를 설정해줌으로써 mybatis와 db가 연결이 됩니다.

 

 

<mappers>태그로 별도의 xml을 분리하여 sql문을 따로 관리합니다.

 

sql문을 보면 int형 parameter를 받고 Blog 클래스로 return 합니다. *에 있는 각 컬럼과 resultType 에 있는 클래스에 setter로 만들어져 있으면 각 property에 자동으로 입력된다.

html 에서 form에 있는 name과 dto 의 property가 같으면 이어지는 것과 같다. 만약 dto 와 db에서의 column이 다르다면 alias를 이용해서 이름을 맞춰줍니다.

 

mybatis와 mybatis-spring의 database 접근 방식

1. Service

2.Repository(= Dao interface)

3.Object Relational Mapper(Mybatis, Mybatis-Spring)

  • MyBatis Framework 에선 sqlSession을 사용하기 위해 SqlSessionFacory를 만들고 그 하위에 sqlMapConfig.xml 또 그 하위에 mapper.xml, dbinfo.properties 를 만들어서 사용한다. 이렇게 만들어진 sqlSession으로 Database에 접근한다.
  • MyBatis-Spring에서는 위의 과정 중에서 SqlSession Factory Bean에 'DataSource', 'MyBatisConfig File', 'mapping File'를 알려주면 SqlSession Factory, SqlSession 알아서 만들어준다.
파일 설명
MyBatis 설정파일(sqlMapConfig.xml) 데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일의 경로 등의 고정된 환경 정보를 설정한다.
SqlSessionFactoryBuilder Mybatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다.
SqlSessionFactory SqlSession을 생성한다.
SqlSession 핵심적인 역할을 하는 Class로 SQL 실행이나 Transaction 관리를 실행하고, SqlSession 오브젝트는 Tread-Safe하지 않으므로 thread마다 필요에 따라 생성한다.
mapping 파일(member.xml) SQL문과 ORMapping을 설정한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'' 카테고리의 다른 글

[웹] Vue.js  (0) 2021.05.10
[웹] Rest API  (0) 2021.05.09
[웹] Spring(2)  (0) 2021.04.27
[웹] Spring  (0) 2021.04.27
[웹] JSP, 기타  (0) 2021.04.14