Spring
[Spring] DAO, Mapper 차이점
배씌
2024. 5. 9. 16:17
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 는 인터페이스에 정의된 메서드명과 동일하게 작성