본문 바로가기

Spring

[Spring] DAO, Mapper 차이점

esg 프로젝트를 진행하면서 프로젝트 소스를 분석하다가 궁금증이 생겼다.

스프링의 구조를 잡을 때, Controller.java -> Service.java -> Mapper.xml -> Dao.java 형식으로 구조가 잡혀있었는데, Dao와 Mapper가 무엇인지 잘 몰라 검색해보던 중 Controller.java -> Service.java -> Mapper.java -> Mapper.xml 형식의 구조가 있는 것도 알게되었다. Mapper.java와 Mapper.xml의 차이는 무엇인지. 그리고, 두 구조의 차이점은 무엇인지 정리해보겠다.

 

[DAO와 Mapper 인터페이스 정의]

1. DAO 란?

 : Data Access Object 의 악어. 실질적으로 DB에 접근하여 데이터를 조회하거나 조작하는 기능을 전담하는 객체.

 

2. Mapper 인터페이스 란?

: Mybatis 매핑 XML에 기재된 SQL을 호출하기 위한 인터페이스.

 

※ Mapper 인터페이스를 사용하지 않을 경우

  • sqlSession 을 등록해줘야 함.
  • DAO 인터페이스와 인터페이스를 구현한 DAO 클래스를 생성해줘야함.
  • Mapper 인터페이스를 사용하지 않았을 때는 네임스페이스 + "." + SQL ID 로 지정해서 SQL을 호출해야함. ex) session.selectOne("com.test.mapper.TimeMapper.getReplyer, bno")
  • selectOne, insert, delete 등 제공하는 메소드를 사용해야 함.
  • 문자열로 작성하기 때문에 버그 발생 가능.
  • IDE에서 제공하는 code assist 사용 불가

※ Mapper 인터페이스 사용 방법

  • 개발자가 직접 작성
  • 네임스페이스는 패키지명을 포함한 인터페이스명
  • SQL id 는 인터페이스에 정의된 메서드명과 동일하게 작성

'Spring' 카테고리의 다른 글

[Spring] JUnit 이란?  (1) 2024.05.22
[Spring] Service 작성법  (0) 2024.05.22
[Spring] Repository 작성법  (1) 2024.05.22
[Spring] Controller, Service, Repository  (0) 2024.05.22
[Spring] AJaxResVO 란?  (0) 2024.05.13