2011-08-15 2 views
0

나는 주위를 탐색하는 동안 일반적인 DAO 인터페이스에이 코드를 발견왜 일반 DAO 인터페이스의 메서드에 기본 액세스를 사용합니까?

public interface GenericDAO<T, ID extends Serializable> { 

    Class<T> getEntityClass(); 

    T findById(final ID id); 

    List<T> findAll(); 
    List<T> findByExample(final T exampleInstance); 

    List<T> findByNamedQuery(
     final String queryName, 
     Object... params 
    ); 

    List<T> findByNamedQueryAndNamedParams(
     final String queryName, 
     final Map<String, ?extends Object> params 
    ); 

    int countAll(); 

    int countByExample(final T exampleInstance); 

    T save(final T entity); 

    boolean delete(final T entity); 
} 

기본 액세스 한정자 방법 떠나는 특히 어떤 이유가 있습니까 (클래스/패키지 : 예, 서브 클래스/세계 : 아니오)?

P.S : 추가 질문. ID는 일반적으로 RDBMS (XML, 플랫 파일 ...)에 의존하지 않는 구현에서 발견됩니까?

답변

8

인터페이스의 메소드는 암시 적으로 public입니다. 따라서 공개 수정자를 사용하는 것은 불필요하고 불필요합니다.

Checkstyle even has a rule 공용 메서드가 인터페이스 메소드에서 사용되지 않는지 확인하십시오.

+0

+1, spot on. 인터페이스 메소드는 암시 적으로'public'이고 필드는'public'' static'' final'입니다. – adarshr

+0

맞습니다. 나는이 사실을 완전히 잊었다. @adarshr : 아직 인터페이스에서 필드를 만나지 못했습니다. 다음 항목에서는 상수로 작동한다고 설명합니다. http://www.coderanch.com/t/408233/java/java/Instance-variables-interface –

+0

지나가는 동안 ID 보유에 관한 질문에 대한 의견이 있습니까? –

관련 문제