Wie zu verwenden StatelessSession mit Spring Data JPA und Hibernate?
Ich bin mit Spring + Spring Data JPA mit Hibernate und ich brauchen, um einige große und teure Datenbank-Operationen.
Wie kann ich mit einem StatelessSession
für die Durchführung dieser Art von Operationen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung ist die Umsetzung einer Spring bean factory zum erstellen dieser
StatelessSession
und Spritzen es in Ihre custom-repositories Umsetzung:Check-out die
StatelessSessionFactoryBean
und die volle Gist hier. Mit Spring 3.2.2, Spring Data JPA 1.2.0 und Hibernate 4.1.9.Dank dieser JIRA und der Kerl, der befestigt
StatelessSessionFactoryBean
code. Hoffe, dies hilft jemand, es funktionierte wie ein Charme für mich.Um eine noch bessere performance-Ergebnisse, die Sie aktivieren können, jdbc batch Anweisungen auf der
SessionFactory
/EntityManager
durch die Einstellung derhibernate.jdbc.batch_size
Eigenschaft auf die SessionFactory-Konfiguration (d.h.:LocalEntityManagerFactoryBean
).Einen optimalen nutzen des jdbc batch insert /updates schreiben, wie viel Entitäten des gleichen Typs wie möglich. Hibernate erkennt, wenn Sie schreiben von einem anderen Entitätstyp und spült die batch automatisch, auch wenn es noch nicht erreicht hat, werden die konfigurierten batch-Größe.
Mithilfe der StatelessSession verhält sich im Grunde das gleiche wie mit so etwas wie Frühling
JdbcTemplate
. Der Vorteil der Verwendung derStatelessSession
ist, dass das mapping und die übersetzung in SQL erfolgt über Hibernate. Wenn Sie meineStatelessSessionFactoryBean
Sie können sogar mischen Sie dieSession
und dieStatelessSession
gemischt in einer Transaktion. Aber Vorsicht, der dem ändern einer Entität geladenSession
und anhaltenden es mit derStatelessSession
denn es wird in locking Probleme.