"플러그 가능한"DAO 레이어는 일반적으로/항상 인터페이스 DAO를 기반으로합니다. 에 반영 (서로 다른 분야를 찾을 수있는
는 그런 다음, 다른 몇 가지 일반적인 DAO 구현을 개발할 수 있습니다 (이것은 당신이 Morphia's generic DAO에있는 것입니다)
public interface GenericDAO <T, K extends Serializable> {
List<T> getAll(Class<T> typeClass);
T findByKey(Class<T> typeClass, K id);
void update(T object);
void remove(T object);
void insert(T object);
}
예를 들어, 아주 일반적인 간단한을 고려 할 수 있습니다 생성자 매개 변수, setter 및 getter 등). 의 가정하자 JDBC 기반의 하나
public interface PersonDAO extends GenericDAO<Person, Long> {
}
및
public class PersonDAOJDBCImpl extends GenericDAOJDBCImpl<Person, Long> implements PersonDAO {
}
: 일반 DAO가 (구체적인 데이터 저장소에 대한) 구현되면
public class GenericDAOJDBCImpl<T, K extends Serializable> implements GenericDAO<T, K extends Serializable> {
private String db_url;
private Connection;
private PreparedStatement insert;
// etc.
}
은, 콘크리트의 DAO를 얻는 것은 더 생각할 필요도 없을 것입니다
(BTW, Morphia's BasicDAO은 MongoDB 용 일반 DAO 구현입니다.)
플러그 가능한 아키텍처에서 두 번째로 중요한 것은 구체적인 DAO 구현을 선택하는 것입니다. Apress: Pro Spring 2.5 (제 2 장 "Hello World")에서 제 2 장을 읽고 공장과 의존성 주입에 대해 점진적으로 배우도록 권합니다.
+1 저는 Guice를 DI 프레임 워크로 추가했습니다. 위대한 성공과 함께 사용. –