Ich migriere mein Projekt von Spring 3.0 + Hibernate 3.6.x nach S3.1 + H4.1
mein neuer Code ist der folgende
%Vor%Wenn getStudent method marker als SUPPORTS ausgeführt wird und nur gelesen wird, bekomme ich
%Vor% Früher war es mit Spring 3.0 und Hibernate 3.6.x in Ordnung, jetzt wurde es geändert. Ich habe von Spring-Foren, die mähen, ich brauche Mark-Transaktion erforderlich, wenn ich sessionFactory.getCurrentSession();
Ich habe die Technik der unteren Ebene verwendet, um die maximale Geschwindigkeit in meinem Code zu erreichen. Bei Operationen, die mehrere get / save / update / queries erfordern, habe ich folgendes gemacht:
SUPPORTS
. SUPPORTS
inside markiert sind
erste Methode. REQUIRED
markiert sind, und das ist ein Punkt
wo meine Rollback-Transaktion beginnt. Ich habe eine gute Leistungsverbesserung mit dieser Technik, aber wenn ich alle meine Methoden als REQUIRED markiere, wird es zerstört.
Wie kann es umgehen?
Ich habe das gleiche Problem beim Experimentieren mit Spring und Hibernate 3/4 festgestellt.
Es sieht so aus, als wäre dies ein bekanntes Problem, das im folgenden JIRA-Link beschrieben wird.
Sieht so aus, als ob die Hibernate 4-Version von SpringSessionContext keine neue Sitzung öffnet, wenn keine Transaktion / Sitzung geöffnet ist und die aufgerufene Methode @Transactional mit propagation = Propagation.SUPPORTS konfiguriert ist.
Ich denke, Sie können die Transaktion immer noch als schreibgeschützt markieren. nicht sicher, ob es Auswirkungen auf die Leistung hat.