2020. 8. 8. 17:56ㆍSpring/Spring
1. Mybatis 프레임워크
1) Mybatis
한두 줄의 자바 코드로 데이터베이스 연동을 처리하며 SQL 명령어를 자바 코드에서 분리하여 xml 파일에 따로 관리한다. 지금까지 JDBC로 데이터베이스 연동을 처리할 때, 연결과 해제 코드를 직접 구현을 해왔다. 하지만 MyBatis의 경우 개발자가 SQL 관리만 집중할 수 있도록 한다.
xml에 저장된 SQL 명령어를 실행하고 결과를 VO 같은 자바 객체에 자동으로 매핑을 해준다. 결국 Mybatis 프레임워크를 이용하여 데이터베이스 연동을 처리하면 한두 줄의 자바 코드만으로 데이터베이스 연동을 처리할 수 있다.
SQL 명령어가 DAO 클래스에 저장될 경우 명령어를 수정 시 클래스를 다시 컴파일하기 때문에 관리하기가 쉽지 않다. 이러한 불편함을 해결하기 위해 Mybatis는 자바 코드에서 SQL 명령어를 분리한다.
2) Java ORM Plugin 설치
스프링 관련 프로젝트 개발에는 STS 플러그인을 이용하여 사용했던 것과 같이 Mybatis도 Java ORM 플러그인을 이용하여 복잡한 설정을 자동으로 만들고 관리할 수 있다.
3) 프로젝트 생성
Spring Leagacy Project - Simple Spring Maven 생성 시 Manifest 파일만 생기는 경우가 있는데, 이클립스의 문제라는 정보가 있다. 따라서 이클립스를 재설치를 권장하는 글을 보았지만, Spring MVC Project로 생성해도 무관하기에 MVC 프로젝트로 생성한다.
Spring MVC Project 생성 후 /WEB-INF 하위의 spring, views 폴더를 삭제하고, web.xml 폴더 내용을 삭제한다. 그리고 /src/main/resources 하위의 META-INF 폴더를 삭제한다.
3) JRE System Library 버전 변경
프로젝트의 Properties에 Project Facet에서(Convert to faceted from) Java 1.8버전으로 수정한다. Runtime도 jdk 1.8 버전으로 적용한다.
4) 라이브러리 추가
pom.xml
5) VO 클래스
xml 파일에 저장된 SQL 명령어에 사용자가 입력한 값을 전달하고 결과를 매핑할 VO 클래스를 작성한다.
/src/main/java/
BoardVO.java
6) SQL Mapper XML 파일 생성
SQL Mapper XML 파일에는 데이터베이스 연동에 필요한 명령어들이 저장되는 곳이며, Java ORM 플러그인으로 쉽게 생성할 수 있다. 생성시 /src 폴더 하위에 생성이 되며, /src/main/resources/mappings 하위에 이동시킨다.
7) SQL Mapper XML
기존 BoardDAO에서 사용한 SQL 명령어를 등록한다.
/src/main/resources/mappings
board-mapping.xml
8) Mybatis 환경 설정 파일 생성
Mybatis 환경 설정 파일도 Java ORM 플러그인으로 쉽게 생성이 가능한다. 생성된 db.properties 파일과 sql-map-config.xml 파일은 /src/main/resource 하위에 이동시킨다.
9) db.properties
MySQL 데이터베이스 연동을 위한 프로퍼티 정보가 설정되어 있으므로 H2 데이터베이스 관련 정보로 수정한다.
/src/main/resources/
db.properties
10) sql-map-config.xml
<properties> 엘리먼트는 xml 설정에서 사용할 프로퍼티를 선언하거나 외부 프로퍼티 파일을 참조(${프로퍼티명})할 때 사용한다.
<typeAlias> 엘리먼트는 특정 클래스의 별칭을 선언할 수 있다. SQL 명령어들이 저장되는 SQL Mapper에서 사용할 수 있으며 SQL Mapper 파일의 크기를 줄여주거나 설정을 쉽게 할 수 있다.
<enviroment> 엘리먼트는 DBMS로부터 커넥션을 획득하고 데이터베이스 연동 처리를 위한 정보를 추가한다.
<mappers> 엘리먼트는 SQL 명령어가 저장된 파일을 등록할 수 있다.
/src/main/resources/
sql-map-config.xml
11) SqlSession 객체 생성
지금까지는 SQL을 외부의 XML 파일에 저장하는 처리만 해왔다면 Mybatis 설정을 기반으로 DAO 클래스를 작성해야한다. 하지만 DAO 클래스를 구현하기 위해서는 SqlSession 객체가 필요하며, SqlSession을 사용하기 위해서는 SqlSessionFactory 객체가 필요하다.
sql-map-config.xml 파일로부터 설정 정보를 읽기 위한 입력 스트림을 생성하고 SqlSessionFactory 객체를 생성한다. getSqlSessionInstance() 메서드는 SqlSessionFactory 객체로부터 SqlSession 객체를 얻어내어 반환하는 객체이고 이 메서드를 이용하여 SqlSession 객체가 필요한 DAO 클래스를 구현하면 된다.
/src/main/java/
SqlSessionFactoryBean.java
12) DAO 클래스
BoardDAO 생성자에서는 SqlSessionFactoryBean을 이용하여 SqlSession 객체를 가지고 오고 SqlSession 객체를 이용하여 CRUD 메서드를 모두 구현한다.
각 SqlSession 메서드에서 전달되는 두 개의 정보 중 첫 번째 인자는 실행될 SQL의 id값으로, SQL Mapper에 선언된 네임스페이스와 id를 조합한 값이다. 두 번째 인자는 parameterType 속성으로 지정된 파라미터 객체다.
/src/main/java/
BoardDAO.java
13) 테스트 클라이언트
/src/main/java/
BoardServiceClient.java
구현 화면
[참고] 스프링 퀵 스타트
'Spring > Spring' 카테고리의 다른 글
[Spring] Mybatis 스프링 연동 (0) | 2020.08.12 |
---|---|
[Spring] Mybatis 프레임워크 (2) (0) | 2020.08.11 |
[Spring] JSON 변환 (0) | 2020.08.07 |
[Spring] 다국어 설정 (2) (0) | 2020.08.06 |