Wollte nur Ihre Expertenmeinungen zum deklarativen Transaktionsmanagement für Spring. Hier ist mein Setup:Spring - Transaktion Readonly
- DAO Schicht ist nur alter JDBC mit Spring JdbcTemplate (No Hibernate etc.)
- Dienstschicht ist POJO mit deklarativen Transaktionen wie folgt -
save*, readonly = false, rollback for Throwable
Dinge funktionieren gut mit über dem Setup. Aber wenn ich sage get*, readonly = true
, sehe ich Fehler in meiner Protokolldatei sagen Database connection cannot be marked as readonly
. Dies geschieht für alle get * -Methoden in der Serviceebene.
Nun meine Fragen sind:
A. Muss ich get*
als nur lesbar gesetzt haben? Alle meine get*
Methoden sind reine Lese-DB-Operationen. Ich möchte sie in keinem Transaktionskontext ausführen. Wie ernst ist der obige Fehler?
B. Wenn ich die get*
Konfiguration entferne, sehe ich die Fehler nicht. Außerdem werden alle meine einfachen get*
Operationen ohne Transaktionen ausgeführt. Ist das der Weg zu gehen?
C. Warum sollte jemand transaktionale Methoden haben wollen, wo readonly = true
? Gibt es eine praktische Bedeutung dieser Konfiguration?
Vielen Dank! Wie immer werden Ihre Antworten sehr geschätzt!
Vielen Dank Bozho! Klar als Tag. Ich denke, ich werde die get * -Konfiguration entfernen, da ich einfach JDBC verwende. – AAK
Ohne eine schreibgeschützte Transaktion öffnen Sie sich auch für die gefürchtete 'org.hibernate.LazyInitializationException'. – HDave
In welcher Weise kann ich org.hibernate.LazyInitializationException vermeiden, während der Waffle-Authentifizierungsmanager angezeigt wird. –