211015(금) MyBatis 1일차
<myBatis>
*** SQL문과 자바코드를 분리 : 자바파일에 SQL문장이 1도 있으면 안된다!!!
이제 일반 자바파일에선 SQL 없다~!!! -> xml 파일로 SQL 문장 옮긴다
=> DB 쪽 손질이지 WEB이랑 연관 X
ORM(Object Relational Mapping) 프레임워크는 데이터베이스와 객체와의 관계를 자동으로 맵핑(DTO)시켜 퍼시스턴스 로직 처리를 도와주는 프레임워크이다.
cf) ORM 중 myBatis를 학습하는 것!
대표적으로 iBatis와 hibernate, JPA가 있다
(iBatis는 저세상 갔음)
myBatis는 SQL쿼리문, 예외처리, 트랙잭션 관리들을 XML형식으로 관리한다
POJO(Plain Old Java Object)객체와 테이블의 컬럼들을 편리하고 빠르고 정확하게 매칭할 수 있다.
cf) POJO: 자바의 일반클래스 :DTO - 오브젝트만 상속받고(상속없으면 자동) 상속받은거 없는거
<myBatis의 목적> -중요!
myBatis의 목표와 특징은 쉽고, 간단하고, 의존성이 적다는 것이다
SQL문과 자바코드를 분리함으로 인해 자바 개발자는 쿼리문을 신경 쓰지 않아도 된다.
myBatis는 자바오브젝트와 SQL문 사이의 자동 매핑 기능을 지원하는 ORM 프레임워크이다
자바코드와 SQL를 분리하므로서 SQL문의 변경이 있을 때 마다 자바를 수정하지 않아도 되고 컴파일을 하지 않아도 된다
<설치>
<이클립스에 자르파일 넣기>
- Java Project : mybatisTest (다이나믹 웹 프로젝트 아님~~)
셋다 빌드패스!!
cf) 다이나믹 웹처럼 자동으로 만들어진 lib는 안해도 되는데 이건 내가 직접만들었으니까
참조하려면 빌드패스 수동으로 해줘야한따~!
Package : user.main
Class : UserMain.java (public static void main(String[] args)
------------
Package : user.service
Interface : UserService.java - public void execute(); (추상메소드)
cf) 결합도를 낮추기 위해 인터페이스 이용!
Class : UserInsertService.java
UserSelectService.java
UserUpdateService.java
UserDeleteService.java
UserSearchService.java
------------
Package : user.bean
UserDTO.java
Package : user.dao
UserDAO.java
userMapper.xml
src : mybatis-config.xml (환경설정)
★ 테이블 작성
create table usertable(
name varchar2(30) not null,
id varchar2(30) primary key,
pwd varchar2(30) not null);
<맵핑 - 변수명 동일하지 않을 때>
맵핑하려면 변수명이 모두 같아야한다~~!!
cf) 이거 실무에서 매우 중요!! 연결돼서 이용되는 데이터들 변수명 통일 !! 나중에 고생안하려면 잘 알아두고 습관들여놓자!
- resultType : 가지고 나갈 값이 있을 때 쓰는 것!!!! 그래서 insert같은애들은 없는것이다~~
들어올때는 parameterType은 가져올때 !!!~~~~ 다 뜻이 내포되어 있다
<MyBais 개념>
- 이제 JDBC 필요없다 !!!! -> 마이바티스 이용~!!!! 근데 또 나중에는 스프링한테 뺏긴다
- DAO는 이제 마이 바티스에 접근하는 용도!
<xml설정>
<SqlSessionFactory / SqlSession>
sqlSessionFactory가 있어야 sqlSession사용가능
- sqlSessionFactory가 xml의 config를 1번 읽어낸다! => 생성자로 처리
cf) 읽어들일때 IO Stream 둘다이용가능![]() |
cf) 네임스페이스로 이용![]() |
- 자동으로 맵핑 해준다
<입력완성>
1. config.xml
2. DAO
3. mapper.xml ->DAO에 자동 맵핑
- #{ } 는 물음표 대신 쓰는 공식~!!!
<출력완성>
cf)