@PersistenceContext EntityManager-Threadsicherheit in Spring und Java EE

EntityManager istnicht threadsicher per Definition. Servlets-Spezifikationen besagen, dass in einer nicht verteilten Umgebung und ohne ImplementierungSingleThreadModel, es gibtNur eine Servlet-Instanz pro Definition.

Daher in Java EE, wenn Sie ein injizierenEntityManager durch die@PersistenceContext in Servlets Feld - es ist nicht threadsicher:

<code>public class MyServlet extends HttpServlet {

    // Not thread-safe, should be using EMF instead.
    @PersistenceContext
    private EntityManager em;
}
</code>

Ist das richtig zu sagen, dass, obwohl der Standardbereich von Spring Beans Singleton ist, dieEntityManager ist thread-safe wie die Feder verwendetThreadLocal seine Transaktion zu binden undEntityManager dazu?

Ist das obige Servlet-Beispiel im Frühjahr noch gültig? Ist es immer noch nicht threadsicher?

Tut dasThreadLocal Ansatz funktioniert nur für Spring Managed Beans und einfaches Servlet ist nicht einer von denen?

Soweit ich mich erinnere, liegt es in der Verantwortung des Containers, das zu injizierenEntityManager. Bei der Implementierung von Glassfish Java EE hat der Anwendungsserver den erkannt@PersistenceContext als Injektionsstelle.
Wie sieht es im Frühling aus? Ist das Spring Framework für die Ermittlung dieser Anmerkungen verantwortlich oder ist es für den JPA-Implementierer verantwortlich?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage