मेरे पिछले प्रश्न, DAO and Service layers (JPA/Hibernate + Spring) के बाद, मैंने जेपीए/हाइबरनेट का उपयोग कर एक आवेदन में अपनी डेटा परत (कम से कम शुरुआत में) के लिए केवल एक ही डीएओ का उपयोग करने का निर्णय लिया, वसंत और विकेट। जेनेरिक सीआरयूडी विधियों का उपयोग प्रस्तावित किया गया था, लेकिन मुझे यकीन नहीं है कि जेपीए का उपयोग करके इसे कैसे कार्यान्वित किया जाए। क्या आप कृपया मुझे एक उदाहरण दे सकते हैं या इसके बारे में एक लिंक साझा कर सकते हैं?सिंगल डीएओ और जेनेरिक सीआरयूडी विधियों (जेपीए/हाइबरनेट + स्प्रिंग)
public interface GenericDao<T, PK extends Serializable> {
T create(T t);
T read(PK id);
T update(T t);
void delete(T t);
}
और एक कार्यान्वयन:
public class GenericDaoJpaImpl<T, PK extends Serializable>
implements GenericDao<T, PK> {
protected Class<T> entityClass;
@PersistenceContext
protected EntityManager entityManager;
public GenericDaoJpaImpl() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass()
.getGenericSuperclass();
this.entityClass = (Class<T>) genericSuperclass
.getActualTypeArguments()[0];
}
@Override
public T create(T t) {
this.entityManager.persist(t);
return t;
}
@Override
public T read(PK id) {
return this.entityManager.find(entityClass, id);
}
@Override
public T update(T t) {
return this.entityManager.merge(t);
}
@Override
public void delete(T t) {
t = this.entityManager.merge(t);
this.entityManager.remove(t);
}
}
के साथ एकीकरण है कैसे होगा साथ में यह फिट एसएलएसबी और पोजो इकाइयां (डीबी टेबल का प्रतिनिधित्व)? – NimChimpsky
ग्रेट उत्तर। बस कुछ टिप्पणियां: मैं क्लास को कन्स्ट्रक्टर विधि (एक अनचेक कास्ट के बजाए) में पैरामीटर के रूप में पास करता हूं; हटाए गए विधि में पैरामीटर टी को पुन: असाइन नहीं किया जाना चाहिए और कक्षा अधिमानतः सारणी होगी। – megathor
धन्यवाद !!!!!!!! बहुत! – verystrongjoe