2016-05-09 16 views
-1

Ich versuche Spring+JPA+Hibernat e zu verwenden und versuchen EntityManagerFactory, zu injizieren und später EntityManger in meinem code.But erstellen, wenn ich entityManager.persist(user) verwenden, spart die user nicht auf den database .Aber wenn ich versuche, die EntityManager statt EntityManagerFactory zu injizieren, es funktionierte Ich weiß nicht, wo das Problem liegt.Warum `EntityManager` funktioniert, aber EntityManagerFactory hat nicht für mich funktioniert?

können Sie auch diese question für mehr Code sehen.

Antwort

1

Bei Verwendung einer Ebene EntityManagerFactory anstelle einer EntityManager müssen Sie createEntityManager aufrufen. Dies wird immer eine neue EntityManager erstellen, das ist im Grunde eine einfache EntityManager nicht verwaltet noch von Spring erkannt. Sie müssen also auch Transaktionen selbst starten/committen.

Wenn Sie die EntityManager verwenden, erhalten Sie eine transaktional synchronisierte Instanz, die von Spring verwaltet wird und an die aktuelle Transaktion gebunden ist. Sie müssen also keine Transaktion selbst starten/committen.

Siehe auch die JPA section des Referenzhandbuchs.

Verwandte Themen