KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
EntityManager is not thread-safe by definition. Servlets specs says that in non-distributed environment and without implementing SingleThreadModel , there is only one servlet instance per definition . Therefore, in Java EE when you inject an EntityManager through the @PersistenceContext into Servlet's field - it's not thread safe: public class MyServlet extends HttpServlet { // Not thread-safe, should be using EMF instead. @PersistenceContext private EntityManager em; } Is this correct to say that even though the default scope of Spring beans is singleton, the EntityManager is thread-safe as the Spring uses ThreadLocal to bind its transaction and EntityManager to it? Is the above Servlets example still valid in Spring? Is it still not thread-safe? Does the ThreadLocal approach works only for Spring managed beans and plain servlet is not one of those? As far as I remember, it's the container responsibility to inject the EntityManager . In Glassfish Java EE implementation, it was the application server who discovers the @PersistenceContext as injection point. How does it look like in Spring? Is the Spring Framework responsible for discovering those annotations or it's responsibility of the JPA implementor?
Tags (comma-separated)
Save Edits
Cancel