Hallo,
ich grübel jetzt schon ein paar Tage aber komme irgendwie nicht weiter.
Meine Ziel ist es, eine Schnittstelle/ein Modul zu programmieren, das möglichst universell einsetzbar ist. Dieses Modul kapselt Datenbankabfragen (hier mit Hibernate realisiert).
Die Idee dahinter ist, dass andere Programmierer nur eine Methode aufrufen und dieser ein paar Werte mitgeben. Sollte dann irgendwann das DBMS gewechselt werden, wo Hibernate nicht möglich bzw. nötig ist, muß man nur dieses Modul tauschen.
Das Problem ist, dass mein Ansatz nicht universell ist. Sollten in einem Projekt neue oder andere Objekte benötigt werden, müsste man diese Modul entsprechend anpassen
Eine Methose sieht zum Beispiel so aus:
Am liebsten wäre es mir, wenn ich beim initialisieren der DetachedCriteria den String als Klassenname übergeben könnte. Ich weiß nicht ob dies möglich ist und meine Versuche blieben erfolglos.
Vielleicht hat jemand ja eine Idee oder andere Hinweise für mich?
ich grübel jetzt schon ein paar Tage aber komme irgendwie nicht weiter.
Meine Ziel ist es, eine Schnittstelle/ein Modul zu programmieren, das möglichst universell einsetzbar ist. Dieses Modul kapselt Datenbankabfragen (hier mit Hibernate realisiert).
Die Idee dahinter ist, dass andere Programmierer nur eine Methode aufrufen und dieser ein paar Werte mitgeben. Sollte dann irgendwann das DBMS gewechselt werden, wo Hibernate nicht möglich bzw. nötig ist, muß man nur dieses Modul tauschen.
Das Problem ist, dass mein Ansatz nicht universell ist. Sollten in einem Projekt neue oder andere Objekte benötigt werden, müsste man diese Modul entsprechend anpassen
Eine Methose sieht zum Beispiel so aus:
Java:
public List selectList(String object, TreeMap<String, Object> criteria) {
List list=null;
System.out.println("Object: "+object);
if(object.equals("Bla")){
DetachedCriteria crit = DetachedCriteria.forClass(Bla.class);
while(criteria.size()>0){
System.out.println("Key: "+ criteria.firstKey());
crit.add(Restrictions.eq(criteria.firstKey(), criteria.get(criteria.firstKey())));
criteria.remove(criteria.firstKey());
}
list=getHibernateTemplate().findByCriteria(crit);
}
if(object.equals("Blubber"){
DetachedCriteria crit = DetachedCriteria.forClass(Blubber.class);
//die gleiche while-Schleife wie bei "Bla"
}
return list;
}
Am liebsten wäre es mir, wenn ich beim initialisieren der DetachedCriteria den String als Klassenname übergeben könnte. Ich weiß nicht ob dies möglich ist und meine Versuche blieben erfolglos.
Vielleicht hat jemand ja eine Idee oder andere Hinweise für mich?