当前位置:首页 > java知识学习_java技术文章 > 正文

persistencecontext注解应用管理与相关问题总结

浏览107+

一、@persistencecontext注解和EntityManager介绍

该注解是一个用来操作实例化对象与进行数据持久化的一个注解,它实际上是在内存中保存了一些实体类对象实例所构成的一些集合,该注解的主要作用就是它能够根据实体类的要求根据实体类状态的变化,能够做出不同的应对以及做持久化操作。

说白了就是persistencecontext注解能够从数据库中把数据查询出来,然后保存在内存中,经过处理之后再持久化到数据库中。

persistencecontext对象必须跟EntityManager一起使用,它受EntityManager的管理,persistencecontext中保存的对象如果做做修改和更新操作的话EntityManager都会跟踪到。

persistencecontext对象被EntityManager所追踪和监控,一旦该注解下维护的对象中脱离了EntityManager的监管之后就会变成非托管的对象,这些非托管的对象就不会再受EntityManager的管理了,然后这些对象在做状态的更新和修改时都不会被持久化到数据库中。

二、实际应用管理案例

1)EntityManager容器关联PersistenceContext对象

依赖注入的详细代码

上图中的代码是在spring容器中通过依赖注入的方式将PersistenceContext的对象交给了EntityManager管理,直接注入到EntityManager容器中。

这个操作实际上就是将PersistenceContext中的实例化对象交给EntityManager来关联,这样这些对象就会受到EntityManager的监控和管理。

2)不同的EntityManager关联不同的PersistenceContext示例代码

PersistenceContext示例代码

通常情况下,不同的EntityManager如果他们指向的是同一个unitname的话,那么他们所关联的PersistenceContext实例对象是同一个对象实例,但是上面的代码是一个特殊的案例,尽管他的unitName都是1xhPU,但是EntityManager2关联了一个name等于PC2的实例对象,因此它们两个所关联的实例是不一样的。

三、本文中的注解和@Resource的区别的相关问题解答

1)@Resource是注入spring容器中提供的可以直接装配使用的资源对象,例如MessageDrivenContext上下文对象和SessionContext上下文对象 , 或自定义名称指定的JNDI对象,您可以将其视为资源->数据源->这是数据连接,基本上告诉程序数据库在哪里。

2)@PersistenceContext注入是实体管理器,它执行持久性操作,需要persistence.xml配置文件的配置与支持,将实体类状态存储到一堆数据结构中,它实际上是在内存中保存了一些实体类对象实例所构成的一些集合,该注解的主要作用就是它能够根据实体类的要求根据实体类状态的变化,能够做出不同的应对以及做持久化操作。

四、@PersistenceContext注解可以注入抽象类的属性相关问题解答

众所周知,抽象类的属性是不能够进行实例化的,因为抽象类是没有构造方法的,但是实际应用中,@PersistenceContext注解却能够引入抽象类的属性,那这是为什么呢?

其实我们看到的只是表面,它并不是直接引入的抽象类,因为使用了该注解之后就会有一个EntityManager管理器对象,这个管理器对象实际上是引用的子类实现类的对象,其子类是可以实例化的吧,因此,它并不是引入的抽象类的属性,而是引入抽象类子类实现类的属性。

责任声明:文章信息由IT教程屋小编精心整理总结编排而成,倾注了心血和汗水,转载时请遵循行业规范务必注明文章作者、来源及本页链接,谢谢合作!
本篇文章标题:persistencecontext注解应用管理与相关问题总结
本篇文章url地址:http://www.itjcw123.cn/3244.html