2009-07-13 2 views
0

DB에 쿼리하여 ID로 직원의 이름을 알아야합니다. 수업이 필요한 것 같습니다. 그러나 단 하나의 방법을 가진 수업은 좋은 생각입니까 아니면 다른 것을 제안합니까? 당신이 더 필요하면자신의 ID로 직원의 이름 만 얻습니다. 그래서 단 하나의 메소드를 가진 정적 클래스 하나?

public static class EmployeeRepository { 
    public static string GetEmployeeNameByID(int id) { ... } 
} 

, 당신은 더 많은 일을 할 수 있습니다 : 그건 당신이 직원에 대해 필요한 정보의 유일한 조각의 경우

답변

1

후 그래, 당신은 하나의 정적 방법으로 정적 클래스가 필요합니다.

0

어쩌면 내가 잘못된 질문에 대답하고 있을지 모르겠지만 이름을 알기보다는 ID로 전체 직원 레코드를로드하는 측면에서이 점을 고려해야한다고 생각할 수도 없습니다. 그렇다면 가장 간단한 방법은이를 수행하는 직원 클래스에 정적 메서드를 사용하는 것입니다.

+0

그는 이름보다 더 원하는했다면이 있다면 틸로의 대답에 주석으로이를 추가 한 것, 그는 그렇게 말했다 수 . –

+0

에서이 일에 관심을 보였다 odiseh 깨끗하고 객체 지향적 인 방식으로, 반환 유형은 분석을위한 공정한 게임이라고 생각합니다. 실제로 하나의 문자열은 사람의 이름을 유지하는 좋은 방법이 아니므로 어쨌든 Employee 클래스가 될 가능성이 있습니다. 정적 검색 방법을위한 자연스러운 장소 여러 소스를 지원해야하는 경우 리포지토리 인터페이스를 사용하여 오버로드를 허용 할 수 있습니다. 데이비드 마틴 (David Martin)이 제기 한 문제도 해결됩니다. –

1

테이블/엔티티 유형 당 하나의 클래스가 적당합니다. 이 클래스는 DAO 클래스라고합니다.

해당 클래스에 현재 단 하나의 메소드 만있는 경우에도 좋습니다. 나중에 더 추가 할 수 있습니다.

정적 인 방법을 만들 필요는 없습니다.

특히, DataSource 또는 Connection과 같은 종속성을 주입 할 수 있도록 일반 클래스 (인스턴스 포함)로 만들 수 있습니다.

public class EmployeeDAO { 

    private final DataSource ds; 

    public EmployeeDAO(DataSource ds){ 
     this.ds = ds; 
    } 

    public String getEmployeeNameByID(int id) { ... } 

} 
1

정적 클래스를 사용하지 마십시오. 거래 또는 특정 연결을 사용하려면 어떻게됩니까? 모든 통화에 트랜잭션 또는 연결 개체를 전달하는 일은 매우 어려워집니다.

나중에 확장 할 수있는 일반 오래된 클래스를 사용하는 것이 가장 좋습니다. 정적 클래스는 정적 변수를 갖도록 유혹을 불러 일으킬 수 있으며 이로 인해 스레딩 버그가 발생할 수 있습니다. 개인적으로 저는 이것을 피하고 싶습니다.

나는 내가 충분히 담당자 :(

관련 문제