코드와이
[웹] MyBatis 본문
MyBatis
Mybatis는 JDBC를 대신한다.
JDBC기능 + Mybatis를 사용했을 때에 설정해 주어야 할 것들
- Driver Loading
- driver class 설정 자동화 불가하다.
- Connection : database 연결
- url, user name, user password를 모른다.
- sql 문장을 만들어라
- 사용자가 원하는 작업(insert, select …)이 어떤 것인지 모르기 때문에 자동화 불가하다.
- pstmt를 만들고 값을 set 해라
- ‘?’에 어떤 값을 넣을 것인지 모르기 때문에 자동화 불가하다.
- 실행
- insert, update, delete는 자동화 가능(return int)하지만 select 는 return 타입을 모르기 때문에 자동화 불가하다.
- 다 사용했으면 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 |