Wesley Wu wrote:
> Yes. One minor problem:
>
> @PersistentContext should be @PersistentUnit.
>
>
> That's exactly what I used to do in the past three years.
>
> I controlled the entitymanager and transaction by my own code in a JPA 
> wrapper class,
> and gained great performance advantage over automatic transaction 
> handling like @TransactionAttribute.
Why would calling UserTransaction in your code be faster? Essentially, 
all @TransactionAttribute does is call UserTransaction.begin() and 
commit(). (Any extra overhead should be minimal, especially compared to 
the actual transaction.)

-- Scott
>
> I never inject a @PersistentContext or never use a container provided 
> EntityManager. 
> I use ThreadLocal to maintain every EntityManager instance.
>
> -Wesley
>
> 2010/3/30 Stargazer <starga...@blueyonder.co.uk 
> <mailto:starga...@blueyonder.co.uk>>
>
>     On 30-Mar-2010 09:34, Wesley Wu wrote:
>     > To make set method auto translated into a UPDATE clause, the
>     > entitymanager should be opened after a transaction begins.
>     >
>     >
>     Sincere thanks again, hopefully this will all help others coming
>     across
>     it in the future.
>
>     If I understood you correctly I made those changes and now get
>     example.CourseServlet.emf : @PersistenceContext field must be
>     assignable
>     from EntityManager.
>
>     Heres the new full servlet:
>
>     package example;
>
>     import java.io.IOException;
>     import java.io.PrintWriter;
>
>     import javax.inject.Inject;
>     import javax.persistence.EntityManager;
>     import javax.persistence.EntityManagerFactory;
>     import javax.persistence.PersistenceContext;
>     import javax.servlet.ServletException;
>     import javax.servlet.http.HttpServlet;
>     import javax.servlet.http.HttpServletRequest;
>     import javax.servlet.http.HttpServletResponse;
>     import javax.transaction.UserTransaction;
>
>     public class CourseServlet extends HttpServlet
>     {
>       // Resin IoC will inject this
>       @PersistenceContext(unitName="example")
>       EntityManagerFactory emf;
>
>       @Inject
>       private UserTransaction ut;
>
>       public void service(HttpServletRequest request, HttpServletResponse
>     response)
>         throws IOException, ServletException
>       {
>         PrintWriter out = response.getWriter();
>         response.setContentType("text/html");
>
>         EntityManager em = null;
>         try {
>             ut.begin();
>             em = emf.createEntityManager();
>             CourseBean updateCourse = em.find(CourseBean.class, new
>     Integer(1));
>             updateCourse.setCourse("Magic");
>             ut.commit();
>         } catch (Exception e) {
>             e.printStackTrace();
>         } finally {
>             if (em != null && em.isOpen()) {
>                 em.close();
>             }
>         }
>       }
>     }
>
>
>
>
>     _______________________________________________
>     resin-interest mailing list
>     resin-interest@caucho.com <mailto:resin-interest@caucho.com>
>     http://maillist.caucho.com/mailman/listinfo/resin-interest
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest
>   



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to