对于在Web容器中使用EntityManager对象,这里需要做一些改进,才能更安全。Servlet是非线程安全的,所以需要改变获得EntityManager对象的方式,这里使用ThreadLocal类。
ThreadLocal就是为每一个使用某变量的线程都提供一个该变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有一个该变量,这就解决了Servlet非线程安全的问题。
以下EntityManager对象非容器EJB容器托管,手动控制事务处理。可用于JAVA SE环境。如果是EJB容器管理,或者WEB容器,可以直接注入@PersistenceContext,使用JTA、RESOURCE_LOCAL事务管理。
***********************************************
***********************************************
不是每个人都能制定成标准,但是每个人都有追求标准和超越标准的权利!!