02. 프레임워크/spring

Dao 와 Mapper의 차이

킹다킹 2021. 8. 10. 15:13
반응형

1. MVC Model

내가 지금까지 구현했던 프로젝트는 모두 Controller - Serivce - Dao - query.xml 구조였다.

하지만 Controller - Service - Mapper - query.xml 구조에서 왜 Dao 대신 Mapper를 사용하는지에 대해 궁금했다.

2. Dao와 Mapper의 차이점

Dao(Data Access Object)는 인터페이스와 클래스의 결합된 형태이다.
Mapper는 단순 인터페이스

코드로 보자면 Mapper는

@Mapper
public interface UserMapper {
    int addUser(...);
}

@Mapper 어노테이션을 사용한다. 그리고 메소드 명은 쿼리의 id와 똑같이 작성해야 한다.

Dao는

public List<UserList> test(Map<String, Object> test) throws Exception {
        return selectList(test, "User.selectUserList");
    }

결론적으로 Dao보다는 Mapper가 더 나은 것 같다.
DAO는 데이터 객체에 직접적으로 접근하기 때문에 안전하지 않다.

반응형