मैं भी सामान्य सहायक वर्गों से कुछ समर्थन के साथ GenericDao और GenericDaoImpl -convention का प्रशंसक रहा हूँ, बचाने या हटाने के कुछ लगातार कक्षाओं के लिए अतिरिक्त कार्रवाई की आवश्यकता पड़ती चाहिए:
public interface PersistListener<T> {
void onPersist(T item);
}
इसी तरह की संरचनाओं को हटाने के लिए भी उपयोग किया जा सकता है। यह विशेष रूप से उपयोगी होता है यदि आपको प्रत्येक गतिविधि को लिखने के लिए किसी प्रकार का इवेंट लॉग चाहिए और आप इसके लिए एओपी का उपयोग नहीं करना चाहते हैं।
मेरे GenericDaoImpl कुछ इस तरह दिखेगा:
public class GenericDaoImpl<T> extends HibernateTemplate {
public void setPersistListeners(List<PersistListener> listeners) {
this.persistListeners = new GenericInterfaceHandler(listeners,
PersistListener.class);
}
// hibernate updates the key to the object itself
public T save(T item) {
getSession().save(item);
List<PersistListener<T>> listeners = this.persistListeners.getAll(item);
for (PersistListener<T> listener : listeners)
listener.persist(item);
}
// ...
}
क्या ऊपर के उदाहरण में क्या करेंगे persistListener वर्ग एक पैरामीटर के रूप में दिया की है कि सामान्य वर्ग मिलान के साथ एक PersistListener मिल रहा है। ऐसा पाया जाता है, फिर उचित श्रोता (ओं) को कॉल किया जाता है। My GenericInterfaceHandler का उपयोग वर्तमान में दिए गए वर्ग के लिए केवल सबसे विशिष्ट हैंडलर या केवल हैंडलर को वापस करने के लिए किया जा सकता है।
यदि आप रुचि रखते हैं, तो मैं जेनेरिकइंटरफेस हैंडलर कार्यान्वयन भी पोस्ट कर सकता हूं क्योंकि यह कई अवसरों पर काफी शक्तिशाली निर्माण है।
धन्यवाद! साथ ही, क्या यह मेरे डीएओ इंटरफेस को दाओ पैकेज में डालने और डाओ.hibernate पैकेज में कार्यान्वयन करने के लिए समझ में आता है (ताकि कार्यान्वयन बाद में बदला जा सके)? – oym
यह समझ में आता है – Kevin