소스 별로 Mapper의 사용 방법이 다른데 차이가 무었인지?(namespace, interface)

Better late than never·2022년 9월 5일
0

?

Db통신과 관련된 여러 프로젝트를 참조하다가 프로젝트 별로 Mapper를 사용하는 방식이 달랐는데 왜 다른지 궁금해서 차이점 분석

Mybatis로 db Connection간 Mapper의 운용방법 별 비교 및 차이

Mapper namespace 직접 호출 VS Mapper Interface 클래스

xml 직접 호출

  • 장점 : 설정이 간단(mybatis xml 파일만 설정), 파일을 추가로 생성할 필요가 없고 코딩이 줄어든다
  • 단점 : SqlSession 을 이용하여 조회할 경우 조회의 성격에 대해 알아야 한다(selectOne, selectList...등), 어떤 ID들이 있는지 확인하려면 쿼리가 긴게 많을경우 알아보기가 힘들다, namespace 와 SQL ID를 풀로 써야하기 때문에 오타로 인한 에러유발이 가능

Mapper Interface 사용 후 xml 호출

  • 장점 : Mapper 를 열어보지 않아도 어떤 ID값을 가지고 있는지 한눈에 알아볼 수 있다, SQL을 호출하려는 주석을 Interface 파일에 넣어줄 수 있기 때문에 주석만 제대로 달려있다면 SQL에 대한 내용을 확인하기 쉽다, 오타에 대한 우려가 적어진다, 인터페이를 통해 MultiRow인지 SingleRow인지 알기 때문에 SqlSession 안에 있는 특정 메소드를 분리하여 사용할 필요가 없다
  • 단점 : 파일이 하나 더 생성 된다, 코딩이 살짝 더 늘어난다(설정 및 Interface), 파일의 Package와 파일명을 namespace에 맞춰서 생성해야 한다

결론

유지보수 관리입장에서는 Mapper Interface가 좀 더 낫다는 의견이 있어 해당 방법을 쓰기로 결정

0개의 댓글