Spring data jpa - @transactional

Unten ist der Fluss meiner Anwendung

Controller - services - repository

In der service-Ebene haben wir @Transactional annotation
Wir haben auch jpa:repository - Konfiguration, wobei wir die Angabe der entity-manager und txn-manager.

Meine Frage ist habe ich das Gefühl, dass die txn-manager angegeben in jpa:repositories betrachtet und es gibt keine Auswirkungen der Angabe @Transactional im service layer.
ZB : der service-layer @Transactional zugeordnet werden können, um benutzerdefinierte txn-manager als repository aufgerufen, indem der Dienst kann über eine andere txn-manager. In diesem Fall wird es nicht schaffen, ein problem?

Kann Jemand klären, haben wir jemals benötigen, um @Transactional auf service-Ebene, wenn wir mit jpa-repository ?

  • Transaktionen müssen nicht abgegrenzt auf die DAO-Schicht: eine Einheit der Arbeit wird in der Regel verwenden verschiedene DAOs und orchestriert werden von einer einzigen Transaktions-service-Methode. Warum definieren Sie 2 unterschiedliche Transaktions-Managern, da Sie nur eines wollen?
  • Ja... Weil, wenn Sie mehrere Datenbank-Anrufe, die Sie wollen, in einer einzigen Transaktion NICHT mehrere. Daher müssen Sie eine Transaktion gestartet wurde an der service-Ebene.
  • Stimmen. Es ist ein design-Problem in der aktuellen Implementierung. Der Dienst ruft repostories Verbindung zu zwei verschiedenen Schemata ( dies sind Reine select-Abfragen und nicht JTA ) .Das ist der Grund, warum die jpa-repositories konfiguriert sind, mit unterschiedlichen entity-manager-factory und anderen txn-manager.
InformationsquelleAutor lives | 2013-10-31
Schreibe einen Kommentar