2017-12-14 4 views
0

DAO를 통한 저장소에 대한이 기사를 읽었으며 여러 가지 DAO 구현을 보았습니다. 그러나 왜이 패턴의 사용을 추상화하지 않는지 궁금합니다. 예를 들어,이 기사에서 작성자는 일반 리포지토리 대신 AccountRepository를 사용합니다.아무도 추상화를 사용하지 않는 이유는 무엇입니까? (Repository/DAO implementation)

public class DatabaseRepository<T> { 

    public boolean addItem(T item); 
    public int removeItem(int id); 
    public int updateItem(int id, T item); 
    public List<T> query(Specification<T> specification); 

} 

구현이 잘못 되었습니까? 실제 소프트웨어 엔지니어링 표준에 대한 심층적 인 경험이 없으므로 여기에 특정 지점이나 결함이 누락되었을 수 있습니다. 당신이 DatabaseRepository있을 때, 모든 일반적인 수 있기 때문에

+0

관심있는 사람이 있다면이 기사입니다. https://thinkinginobjects.com/2012/08/26/dont-use-dao-use-repository/ – Wanderer

답변

0

가장 큰 이유입니다. AccountRepository가 있으면 저장소에만있는 메소드 만 가질 수 있습니다. 당신은 당신이 원하는 기본적으로 아무것도 반환하는 방법이라고 쿼리를 가지고 있기 때문에입니다 위로 넘어 수있는 위치

나는 생각한다. 개인적으로, 나는 팀에게 이것을 요구하지 않고 리포지토리 자체에 쿼리 논리를 캡슐화합니다 (물론 DatabaseRepository가 추상 클래스 인 경우이 작업은 정상입니다). 이것의 주요 이유는 재사용 가능성 때문입니다. 일반적으로 특정 쿼리가 두 개 이상의 코드에서 사용될 가능성이 큽니다.

+0

하지만 저장소 메소드를 사용하는 다른 여러 클래스가있는 경우에는 어떻게합니까? ? Repository _then_ declare specific methods를 구현하는 것이 이치에 맞지 않습니까? – Wanderer

+0

예! 아마도 명확하지 않지만 AccountRepository는 DatabaseRepository에서 상속해야합니다. 그래서 AccountRepository : DatabaseRepository . 그런 다음 모든 저장소에서 공유되는 일반적인 방법과 해당 저장소의 특성을 갖게됩니다. – MindingData

관련 문제