Frage

Grüße Ich entwickle eine Nicht-Webanapplikation mit Spring+Hibernate. Meine Frage ist, wie der Hibernatedaosupport faul laden, denn nach einem Anruf von Dao ist die Sitzung geschlossen.

Schauen Sie sich den folgenden Psuedo-Code an:

Dao ist wie:

CommonDao extends HibernateDaoSupport{
 Family getFamilyById(String id);
 SubFamily getSubFamily(String familyid,String subfamilyid);
}

Domänenmodell ist wie:

Family{
 private List<SubFamily> subfamiles;
 public List<SubFamily> getSubFamiles();
}

SubFamily{
 private Family family; 
 public Family getFamily();
}

In der Anwendung erhalte ich DAO von App-Context und möchte den Vorgängen befolgen. Dies ist möglich mit faulen Belastung, da AFAIK nach jeder Methode (getFamilyById (), getubfamily ()) die Sitzung geschlossen ist.

CommonDAO dao=//get bean from application context;
Family famA=dao.getFamilyById(familyid);
//
//Do some stuff
List<SubFamily> childrenA=fam.getSubFamiles();

SubFamily asubfamily=dao.getSubFamily(id,subfamilyid);
//
//Do some other stuff
Family famB=asubfamily.getFamily();
War es hilfreich?

Lösung

Meine Frage ist, wie der Hibernatedaosupport faul laden, denn nach einem Anruf bei Dao ist die Sitzung geschlossen.

Die DAOs erstellen/schließen eine Sitzung für jeden Anruf nicht, sie sind nicht dafür verantwortlich, und dies wird normalerweise mit dem "mit der" durchgeführt. "Offene Sitzung in Blick"Muster (Frühling liefert dafür einen Filter oder einen Interceptor). Dies ist jedoch für Web -Apps.

In einer Swing -App ist eine Lösung zu verwenden lange Sitzung. Sie müssen genau definierte Punkte entscheiden, um die Sitzung zu schließen, um Speicher zu veröffentlichen. Für kleine Anwendungen ist dies normalerweise unkompliziert und funktioniert. Für größere (dh echte Apps) besteht die richtige Lösung darin, eine Sitzung pro Bild/internem Rahmen/Dialog zu verwenden. Es ist schwieriger zu verwalten, wird aber skalieren.

Einige Themen möchten Sie vielleicht lesen:

Andere Tipps

Mit viel mehr Zeit und Untersuchung scheint dies "normales" Verhalten.Der Fehler ist nicht wirklich wichtig und wird so gut weggeworfen, wie ich es Ihnen sagen kann;Es ist möglicherweise nicht einmal ein tatsächlicher Fehler im realen Leben.Es sieht so aus, als würden die Bürokunden einige Hackish-Dinge tun, um das zu tun, was sie tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top