Spring 환경 설정 4 (MyBatis)

설재형·2022년 9월 23일
0

Spring 환경 설정

목록 보기
4/4
post-thumbnail

DB와 연결하기 위해서는 우선 적으로 프로젝트에 jar파일 가져와야 한다.
앞서 포스팅 한 대로 원래같으면 jar파일을 받아서 lib 폴더에 넣어야 하지만 이젠 우린 Maven을 사용하여 외부 라이브러리, 프레임 워크 들을 관리하고 빌드하기로 하였다.

Spring MVC에 필요한 5가지 프레임 워크 들이다.

  • spring-jdbc :
    스프링과 DB를 연결하기 위해 필요한 프레임워크로 현재 Spring 버전에 맞추어서 4.3.14 버전을 사용하였다.

  • mybatis :
    마이 바티스는 객체지향 언어인 자바의 관계형 데이터 베이스 프로그래밍을 좀더 쉽게 할수 있게 도와주는 개발 프레임워크로 쉽게 말해 sql 문과 Java 코드를 분리하여 사용하고 관리할 있게 해준다.

  • mybatis-spring :
    마이바티스 스프링은 마이바티스를 Spring Framework에 녹여내 좀 더 쉽게 사용하고자하는 연동 모듈이다.

  • HikariCP :
    JDBC Connection Pool로 DB와 Connection Pool을 관리하며 JDBC와 DB 연결을 관리하고 도와주는 역할을 한다.

  • mysql :
    sql로 mysql를 사용하기 위해 사용한다.

Mapper

기존에는 Class로 DAO를 생성하였는데 이제는 Mybatis를 사용하여 sql문과 java 코드를 분리하는 작업을 진행하기 때문에 더 이상 java 코드로 이루어진 메소드를 구현할 필요가 없다 그러므로 이제 우리는 이를 추상 메소드로 바꾸어주고 인터페이스를 사용하여 이를 구현할 것이며 Mapper라는 이름으로 이를 지칭한다.

package com.gjai.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.gjai.entity.Board;

@Mapper // 이 파일이 구현해야할 Mapper interface임을 명시
public interface BoardMapper {

	public List<Board> boardList();
	
}

Mapper.xml

이제 sql를 xml 파일로 다음과 같이 태그 형태로 분리하여 사용한다.

  • 태그는 select, update, delete등 해당하는 query 문에 맞춰 작성한다.
    id는 연결하고자 하는 method의 이름을 통하여 mapper.java와 연결해주기 때문에 id와 method의 이름이 일치해야한다.

  • resultType은 select 결과를 어떤 객체에 담아줄 것인가를 골라야해서 반드시 full path를 넣어줘야한다.
    참고로 어차피 결과값이 여러개면 ArrayList로 반환하여주기 때문에 크게 신경쓰지 않아도 된다.

  • 작동원리 : 객체의 field값과 result set의 column을 보고 값을 맞춰서 return한다.
    이때 field값의 순서는 상과없다. 단, 언제? 기본 생성자가 존재할 때만!!
    다만 없어도 되는데 이땐 반드시 result set과 field의 순서가 같아야 한다.
    즉, 1. 필드의 변수명 == 컬럼명 || 2. 기본생성자를 가진 VO여야한다.

DB 접속을 위한 Framework Setting(root-context.xml)

기존에는 JDBC를 연결할때 매번 커넥션 객체를 생성했다가 삭제하는 방식으로 사용을 하였는데 이러한 경우 서버에 문제가 생길수가 있다. 이를 방지 하기 위한 개념이 바로 DBCP이다.

이제 아까 다운로드한 5개의 framework를 setting 해주자 root-context.xml을 봐보자 이게 무엇이냐면 bean은 자바 객체이고 여기에 적어놓으면 spring이 알아서 만들어준다고 앞서 포스팅 했었다. 우선 bean의 구조를 알아보자

<bean id="" class="">
	<property name="" value=""><property/>
</bean>

id 영역은 Board board와 같고 new Board(); 부분은 class 영역과 같은 효과를 가진다.
또한 property는 객체의 필드와 같고 이를 채워주어야 한다. name은 field의 이름 value는 setter method라고 이해하면 편하다. 자, 이제 DB와 연결해주기위해 Conn을 만들어보자

Driver class, url, username, password을 묶어줄 HikariConfig 생성

  1. DB와 Spring을 연결해주기위해 driver, class, url, username, password를 묶어줄 HikariConfig를 생성한다.

  1. JDBC를 갖고있는 DataSource 생성

  1. Mapper Interface를 완전히 구현시켜줄 객체 생성

  1. Mapper들이 있는 패키지를 scan
    scan 방법은 앞서 배웠든 annotaion, @Mapper을 기반으로 scan을 실시한다.

POJO (BoardController)

Con의 역할을 한다. 즉, Mapper에서 나온 결과값을 토대로 url을 안내해주는 역할이다.

@Controller
public class BoardController{
	@Autowired
    private BoardMapper mapper;
    @RequestMapping("/boardList.do")
    public String boardList( Model model ){
    List<Board> list = mapper.boardList();
    model.addAttribute("list", list);
    return "boardList";
    }
}

출처 (헬창개발자의 성장): https://velog.io/@jeong_woo/Spring-POJO-View

0개의 댓글