[포트폴리오 페이지]_4단계 Spring 생태계 이해

2022. 3. 10. 15:44[Spring]_/[Spring]_포트폴리오 페이지 만들기

728x90
반응형

Spring 생태계 정리

 

MVC 구조에서 Model 에 해당하는 DAO , DTO VO 정리


1] DAO : Data Access Object 로 데이터베이스의 data에 접근하기 위해 만드는 객체

데이터베이스에 접근 = Connetion 을 설정해야 한다.

지금 사용하고있는 Mybatis는 커넥션 풀이기 때문에 DAO를 만들지 않아도 된다.

2] DTO : Data Transfer Object 로 데이터 교환을 위한 Beans 를 의미합니다.

Controller , View , Service 등에 디비에서 뽑은 데이터를 교환하기 위한 순수 데이터 객체입니다.

따라서 Getter 와 Setter 메소드만 가지게 됩니다.

3] VO : Value Object 로 DAO보다는 DTO와 비슷합니다. VO는 readOnly 즉 불변의 특징을 가지고 DTO는 동적으로 바꿀 수 있다는 차이점이 있습니다.

VO에서는 getter의 기능만 있다면 DTO는 Getter 와 Setter의 기능을 가지고 있습니다.

 

Model View Controller 의 구조
스프링과 스프링 부트는 MVC 구조를 따르고 있습니다.


Controller는 웹브라우저의 요청을 받아서 처리합니다 -> 코드내의 RequestMapping 이 이에 해당합니다.
해당 url 의 호출을 받으면 그에 맞는 Service를 호출하게 됩니다.

Service = 비지니스 로직
의도하는 기능에 맞는 로직이 설정되어 있고, Model 라인인 DAO를 호출하여 원하는 값을 가져옵니다. 

Model = DAO
Service에서 호출받아 DB에 연결 및 쿼리를 호출합니다.

DB
DAO의 연결을 받고 해당하는 쿼리를 실행시키고 그 값을 반환합니다.

시간순서대로 나열하면 다음과 같습니다.

사용자
Controller
Service
DAO
DB

이때 각 사이사이에 전달되는 객체 지정하게 되는데 이를 DTO 라고 부릅니다. 

따라서 프로그램을 개발할때는 다음 순서로 시작하게 됩니다.

전달될 객체를 지정하기 = DTO 설계
사용자 요청에 응답할 Controller 설계
컨트롤러의 요청에 응답할 Service interface 설계
interface를 override 할 impl 파일 설계

이후 여기서 나뉩니다.
Mybatis에서 제공하는 Mapper 기능을 사용할 수 있습니다.

service는 DAO를 호출하게 되는데
DAO의 경우 하나하나 연결되는 커넥션을 만들어 줘야하는데,
Mapper의 경우 환경 설정시 rootContext.xml에서 지정한

<mybatis-spring:scan base-package="com.yoon.mapper"/>


로 인해 알아서 컨넥션을 해주기 때문입니다.
Mapper를 사용시 connection 부분은 필요 없고 쿼리만 작성하여 전달해주면 됩니다.

Mapper 사용시 service와 동일하게 인터페이스를 작성하고
해당 xml 파일을 만들어 쿼리를 작성하면 됩니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yoon.mapper.MemberMapper">

    <insert id="memberJoin">
        insert into book_member values(#{memberId}, #{memberPw} )

    </insert>

    

</mapper>


xml 파일에서 핵심기능은 다음과 같습니다.
-namespace : Mapper의 전체 경로
-id : 해당 Mapper의 인터페이스의 메소드 이름
resultType : 반환값

 

감사합니다.

728x90
반응형