Vorteile von Spring DAO bei Einsatz von JPA?

Status
Nicht offen für weitere Antworten.

deamon

Bekanntes Mitglied
Hallo,

ist es empfehlenswert die JPA-Unterstützung von Spring zu verwenden?

Ein Vorteil von Springs Abstraktion von verschiedenen Persistenztechnologien ist deren Austauschbarkeit, aber das JPA auch schon eine Schnittstelle ist, hinter der man verschiedene Techniken einsetzen kann, verliert dieses Argument an Gewicht. Wenn man es braucht, kann mit JPA auch direkt SQL verwenden, so dass man im Zweifelsfall nicht mal auf JDBC zurückgreifen bräuchte.

Nach meinen Recherchen scheint der Wechsel von einer selbstverwalteten Umgebung (Java SE) zu einer vom Container verwalteten Persistenz-Umgebung mit Spring einfacher zu sein. Aber macht das wirklich so einen Unterschied?

Spring kann auch von einem spezifischen Transaktionsmechanismus abstrahieren. Aber braucht man das wirklich? Spricht etwas dagegen, sich auf JPA-Transaktionen festzulegen? Wenn man deklarative Transaktionen haben will, kann man ja mit (Springs) AOP auch so ohne Springs JPA-Unterstützung JPA-Transaktionen nutzen, oder?

Ich werde Spring wahrscheinlich für Dependency Injection und wohl auch AOP einsetzen, aber mir scheint Springs Abstraktion von JPA (was auch schon eine Abstraktion ist) im Wesentlichen unnötige Komplexität und Konfiguration zu bringen. Aber da ich damit noch keine Erfahrung gesammelt habe, möchte ich eure Erfahrungen lesen!
 

byte

Top Contributor
Ein Vorteil von Springs Abstraktion von verschiedenen Persistenztechnologien ist deren Austauschbarkeit, aber das JPA auch schon eine Schnittstelle ist, hinter der man verschiedene Techniken einsetzen kann, verliert dieses Argument an Gewicht.
Spring abstrahiert doch nichts von JPA weg, sondern es hilft bei der Integration von JPA bzw. der Persistenzlösung.

Nach meinen Recherchen scheint der Wechsel von einer selbstverwalteten Umgebung (Java SE) zu einer vom Container verwalteten Persistenz-Umgebung mit Spring einfacher zu sein. Aber macht das wirklich so einen Unterschied?
Verstehe nicht genau, was Du hier meinst. Es ist mit Spring genauso einfach Persistenz in eine JSE Projekt zu integrieren, wie in ein Web- oder JEE-Projekt.

Spring kann auch von einem spezifischen Transaktionsmechanismus abstrahieren. Aber braucht man das wirklich?
Brauchen tut man gar nichts, aber deklaratives Transaktionshandling mit Spring ist einfach unglaublich konfortabel und praktisch.

Wenn man deklarative Transaktionen haben will, kann man ja mit (Springs) AOP auch so ohne Springs JPA-Unterstützung JPA-Transaktionen nutzen, oder?
Ja, aber dann erfindest Du (i) das Rad neu und hast (ii) nicht die gleiche Funktionalität. Du kannst ja bei Spring Transaktionshandling genau steuern, wann eine Transaktion aufgeht, wann eine Transaktion suspendet, wann sie comitted wird, wie die Propagation oder Isolation aussieht, ob sie readonly ist uvm. Sowas mit reinem Spring AOP nachzuprogrammieren, halte ich für schwierig und unsinnig.

Ich werde Spring wahrscheinlich für Dependency Injection und wohl auch AOP einsetzen, aber mir scheint Springs Abstraktion von JPA (was auch schon eine Abstraktion ist) im Wesentlichen unnötige Komplexität und Konfiguration zu bringen. Aber da ich damit noch keine Erfahrung gesammelt habe, möchte ich eure Erfahrungen lesen!
Die Konfiguration ist denkbar einfach (TransactionManager konfigurieren, DAOs mit @Transactional annotieren, fertig). Die Komplexität sinkt sogar, weil man sich nicht mehr programmatisch um die Transaktionen kümmern muss (Separation of Concerns) und das Transaktionshandling somit weniger fehleranfällig ist.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben