[Spring] DAO? Mapper?

Dobi·2024년 4월 28일

Spring

목록 보기
5/6

들어가며

스프링 프로젝트를 들어가면서 Mybatis를 사용하게 되었다. 깃허브에 다른사람들의 Mybatis 사용한 사례들을 보면 프로젝트 구조가 크게 두가지로 나눠지는 모습을 볼 수 있었다.

1) DAO.java - Mapper.xml
2) Mapper.java - Mapper.xml

이 두방식이다. 언뜻 보기에는 DAO.javaMapper.java 둘의 이름만 달라 보인다. 어떤 차이가 날까?


DAO ?

DAO는 Data Acces Object로 데이터베이스에 접근해서 데이터를 조회하거나 조작하는 기능을 전담하는 객체이다. DAO를 사용하는 이유는 저수준의 로직(데이터베이스 접근 로직)과 고급 비즈니스 로직을 분리하기 위함이다. DAO는 간단하게 말하면 DB에 접속하여 데이터의 CRUD(생성, 읽기, 갱신, 삭제) 작업을 시행하는 클래스이다.

DAO 사용특징

  • 기존 Mybatis에서 사용하던 규칙이다. (Mybatis 3.0 이전)
  • SqlSession을 등록해야 한다.
  • DAO 인터페이스와 인터페이스를 구현한 DAO클래스를 생성해야한다.
  • 네임스페이스 + “.” + SQL ID로 지정해서 SQL을 호출해야한다.
    (e.g. sesseion.selectOne(“com.test.mapper.testMapper.getUser )
  • selectOne, insert, delete 등 메소드를 사용해야 한다.
  • [네임스페이스.sqlId]와 같은 문자열로 작성하기 때문에 버그가 생길 수 있다.

Mapper

Mapper는 DB와 객체간의 매핑을 관리하기 위해 사용한다. Mybatis 3.0 이후 부터 기존 DAO를 대체하여 사용하기 시작했다.

Mapper 사용특징

  • Mybatis 3.0 이전, 기존 DAO 방식보다 최신 규칙으로 사용이 편리하다.
  • 단순 인터페이스방식으로 일일이 DAO를 만들지 않고 인터페이스만으로 개발 가능
  • Mapper 인터페이스는 개발자가 직접 작성한다.
  • Mapper 네임스페이스는 패키지명을 포함한 인터페이스 명으로 작성한다.
  • SQL id는 인터페이스에 정의된 메서드명과 동일하게 작성한다
  • @Mapper 어노테이션을 사용해서 Bean에 등록한다.
profile
양말 받을 때까지 공부하는 개발자 도비

0개의 댓글