永发信息网

关于EntityManager的createNativeQuery该怎么处理

答案:1  悬赏:20  手机版
解决时间 2021-04-07 23:49
  • 提问者网友:王者佥
  • 2021-04-07 16:45
关于EntityManager的createNativeQuery该怎么处理
最佳答案
  • 五星知识达人网友:掌灯师
  • 2020-12-31 05:27
Session bean or MD bean对Entity bean的操作(包括所有的query, insert, update, delete操作)都是通过EntityManager实例来完成的。EntityManager是由EJB 容器自动地管理和配置的,不需要用户自己创建。

那么Session bean or MD bean如何获得EntityManager实例呢??
非常简单,就是通过下列代码进行依赖注入:
Public class sessionbean1{
@PersistenceContext
EntityManager em;
。。。
}

注意:如果persistence.xml文件中配置了多个。那么在注入EntityManager对 象时必须指定持久化名称,通过@PersistenceContext注释的unitName属性进行指定,例:

@PersistenceContext(unitName="foshanshop")
EntityManager em;

如果只有一个,不需要明确指定。

请注意:Entity Bean被EntityManager管理时,EntityManager会跟踪他的状态改变,在任何决定更新实体Bean的时候便会把发生改变的值同步 到数据库中(跟hibernate一样)。但是如果entity Bean从EntityManager分离后,他是不受管理的,EntityManager无法跟踪他的任何状态改变。

EntityManager一些常用的API(包含query, insert, update, delete操作)

1)get entity —— find() or getReference()
Person person = em.find(Person.class,1);

当在数据库中没有找到记录时,getReference()和find()是有区别的,find()方法会返回null,而getReference() 方法会抛出javax.persistence.EntityNotFoundException例外,另外getReference()方法不保证 entity Bean已被初始化。如果传递进getReference()或find()方法的参数不是实体Bean,都会引发 IllegalArgumentException例外
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯