Purple Bobblehead Bunny

Backend/SPRING

[Spring] DAO, Mapper

준영어린이 2023. 2. 3. 16:53

 

 

🚀 Spring Framework로 프로젝트를 진행하고자 해서 패키지 구조를 짜는 도중 의문점이 생겼다

이전 프로젝트에서 패키지 구조를 Controller.java / Service.java / Mapper.java / Mapper.xml 로 사용을 했다.

이 구조가 스프링 공부를 하고 첫 프로젝트의 구조였다.

다른 구조를 찾아봤더니 Controller.java / Service.java / DAO.java / Mapper.xml 로 짜여져 있었다.

 

육안으로만 확인하면 Mapper.java와 DAO.java만 바꾸면 된다 생각을 하지만

자세히 보면 Mapper.java는 인터페이스 형태이고 DAO.java는 인터페이스와 클래스가 결합이 된 형태이다.그 외 다른 점이 분명 있을 것이다.

 

두 가지를 비교해보자.

 

 

🚀  Mapper ?

Mybatis mappingxml에 기재 된 SQL문을 호출하기 위한 인터페이스이다.

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

 

🚀 DAO ?

Data Access Object의 약자로 DB에 접근 해 데이터를 조회, 조작하는 기능을 담당하는 객체

효율적인 보안성과 커넥션 관리때문에 효율적으로 사용이 된다.

  • sqlSession을 등록해줘야 한다.
  • DAO 인터페이스와 인터페이스를 구현한 DAO클래스를 생성한다.
  • Mapper 인터페이스를 사용하지 않았을 때는 네임스페이스+"."+ SQL ID로 지정해서 SQL을 호출한다.
    • session.selectOne(("com.pro.mapper.UserMapper.getReplyer, bno"))
    • selectOne, insert, delete 등 제공하는 메서드를 사용해야 한다.
    • 버그 확률이 높다

 

 

 

DAO와 Mapper가 다르단 점은 인지하고 있었지만, 실질적으로 차이점을 거의 몰랐다고 해도 무방하다.

개인적으로 mapper의 장단점이 확실 해 매력을 많이 느꼈다.

DB 설정 변경 시 수정해야 할 부분이 너무 많고, 특정 DB에 종속적이라는 점을 느꼈지만,

쿼리문을 짤 때 코드와 분리되어 있어서 보기도 편했고, 수정도 편했다.

 

'Backend > SPRING' 카테고리의 다른 글

[Spring] 테스트 주도 개발  (0) 2023.02.07
[Spring] Spring Security  (0) 2023.02.01
[Spring] GET POST 한글처리  (0) 2023.01.31
[Spring] Model  (0) 2023.01.17
[Spring]MyBatis  (0) 2022.08.01