[Spring] DAO vs Mapper

BBANG-JUN·2020년 11월 23일
1

🍃Spring

목록 보기
18/26
post-thumbnail

Spring 프로젝트를 진행하면서 Mybatis를 사용할 때 두 가지의 프로젝트 패턴이 보인다.

  • Controller.java > Service.java > Mapper.java > Mapper.xml
  • Controller.java > Service.java > ServiceImpl.java > DAO.java > Mapper.xml

Mapper와 DAO로 명칭하되, 차이점은?

version

  • Mapper는 Mybatis 3.0 버전 이후에 나온 패턴
  • DAO는 기존 Mybatis에서 사용하는 패턴

차이점

  • Mapper.java는 단순 인터페이스
  • DAO.java는 인터페이스와 클래스의 결합된 형태

Mapper

Mapper 인터페이스를 사용안하는 경우, 즉 DAO인 경우

  • SqlSession을 등록해줘야함
  • DAO인터페이스와 인터페이스를 구현한 DAO 클래스를 생성해주어야함 ( ex. Impl)
  • 네임스페이스 + "."+SQL ID로 지정해서 SQL를 호출해야함
    ( ex. session.selectOne("com.test.mapper.LoginMapper.getLoginCheck, vo) )
  • selectOne, insert, delete 등 제공되는 메소드를 사용해야함
  • 문자열로 작성하기 때문에 버그가 발생
  • IDE에서 제공하는 code assist를 사용 못함

글을 쓴 이유?
mybatis를 처음 연동했을 때, 3번째 특징인 네임스페이스가 매우 거슬렸고 DAO로 이미 연동을 했더니 한 프로젝트에서 mapper를 복수 연동이 불가능함을 인지했습니다.
그래서 Mapper와 DAO의 정확한 차이를 알고, Mapper로 Mybatis를 연동하는 것을 목표로 삼는 것에 글을 작성했습니다.

profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글