优秀的手机游戏下载!
首页 往DAO类中注入@PersistenceContext和@Resource的区别

往DAO类中注入@PersistenceContext和@Resource的区别

发布时间:2024-01-11 00:20:34 编辑:手游哥 浏览:547

@PersistenceContext

private EntityManager em

注入的是实体管理器,执行持久化操作的,需要配置文件persistence.xml。

注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就是把数据从数据库里提出,然后在内存里处理的,再返回数据库的法则。

@Resource

是注入容器提供的资源对象,比如SessionContext MessageDrivenContext。或者你那个name指定的JNDI对象

可以理解为资源-&gt数据源-&gt也就是数据连接,基本上就是告诉程序数据库在哪里

如何获得EntityManager

关于这个问题,抽象类因为不能实例化,所以不能在spring的xml里配置bean,故不能作为属性注入其他bean。只能用抽象类的完全实现的子类注入。所以楼主不要纠结这个问题。 @PersistenceContext为什么又能实现EntityManager而引入jpa呢? 这是因为spring遇到注解@PersistenceContext后,从容器中得到一个EntityManager对象,但这个对象其实是它子类的对象,而且已经初始化了,不是EntityManager自身的。所有的对象spring都能管理,so,得到一个子类对象很好理解吧

关于如何获得EntityManager:

在容器内部使用,使用@PersistenceContext 来注入.

@PersistenceContext

private EntityManager em

TAG

=======================================================

注入:

让容器来负责构建一个实体管理器,并且将该实体管理器注入到Bean 中.

往DAO类中注入@PersistenceContext和@Resource的区别

=======================================================

2.在容器外部使用

Persistence 构造一个EntityManagerFactory , 然后再构造EntityManager.

Code:

EntityManagerFactory emf = Persistence.createEntityManagerFactory()

EntityManager em = emf.createEntityManager()

写persistence.xml

持久化单元名,在一个persistence.xml 中可以有多个持久化单元,用名字来区分.

如果只有一个就可以省略不写.

: 告诉容器持久化提供者是哪一个

: 数据源的位置(JNDI 名称)

: 表的生成策略

希望对你有帮助

以上就是关于往DAO类中注入@PersistenceContext和@Resource的区别全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

@PersistenceContext private EntityManager em 注入的是实体管理器,执行持久化操作的,需要配置文件persistenc…
查看详情
@PersistenceContext private EntityManager em 注入的是实体管理器,执行持久化操作的,需要配置文件persistenc…
查看详情
@PersistenceContext private EntityManager em 注入的是实体管理器,执行持久化操作的,需要配置文件persistenc…
查看详情
相关资讯
猜你喜欢