每次访问数据库时是否需要createEntityManager()?

时间:2012-07-31 14:08:48

标签: java entitymanager

如果您正在执行CRUD程序,您必须这样做(使用事务类型:RESOURCE_LOCAL而不是JTA)

@PersistenceUnit(unitName="mongo")
EntityManagerFactory emf;

EntityManager em;


@Inject
private SomeObj injectableObj;

public void create()
{
   em = emf.createEntityManager(); <---- here
   SomeObj obj = new SomeObj();
   em.persist(obj);
}

public void read()
{
   em = emf.createEntityManager();  <---- here
   Query query = em.createQuery("Select s from SomeObj s");

}

public void update()
{
   em = emf.createEntityManager();  <---- here
   SomeObj s = em.find(SomeObj.class, injectableObj.getId());
   s.setSomeObj(injectableObj.getSomeObj());

}

public void delete()
{

   em = emf.createEntityManager();  <---- here
   SomeObj s = em.find(SomeObj.class, injectableObj.getId());
   em.remove(s);
}

问题:无论如何都要注入EntityManager吗?

2 个答案:

答案 0 :(得分:1)

也许试着在这里寻找例子:

Injections EntityManager

我更喜欢使用:通过@PersistenceContext注入

答案 1 :(得分:0)

您可以使用注射。我这样用它:

@PersistenceContext(unitName = "some_jndi_name")
private EntityManager em;