एक "प्लग करने योग्य" DAO परत आमतौर पर/हमेशा एक इंटरफ़ेस 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);
}
(यह आपके पास मॉर्फिया का सामान्य डीएओ )
फिर आप अलग-अलग कई सामान्य डीएओ कार्यान्वयन विकसित कर सकते हैं, जहां आप अलग-अलग फ़ील्ड (कन्स्ट्रक्टर पैरामीटर, सेटर्स और गेटर्स इत्यादि में परिलक्षित) पा सकते हैं। आइए एक JDBC-आधारित मान लें:
public class GenericDAOJDBCImpl<T, K extends Serializable> implements GenericDAO<T, K extends Serializable> {
private String db_url;
private Connection;
private PreparedStatement insert;
// etc.
}
एक बार जेनेरिक डीएओ लागू हो जाने के बाद (एक ठोस डेटास्टोर के लिए), एक ठोस डीएओ प्राप्त करना कोई ब्रेनर नहीं होगा:
public interface PersonDAO extends GenericDAO<Person, Long> {
}
और
public class PersonDAOJDBCImpl extends GenericDAOJDBCImpl<Person, Long> implements PersonDAO {
}
(बीटीडब्ल्यू, आपके पास मॉर्फिया का बेसिकडीएओ MongoDB के लिए सामान्य DAO का कार्यान्वयन है)।
प्लग करने योग्य वास्तुकला में दूसरी बात ठोस डीएओ कार्यान्वयन का चयन है। मैं आपको Apress:Pro Spring 2.5 से अध्याय 2 पढ़ने की सलाह दूंगा। ("हैलो वर्ल्ड" में स्प्रिंग डालना") कारखानों और निर्भरता इंजेक्शन के बारे में उत्तरोत्तर सीखने के लिए।