刚刚接触这个项目,有很多不明白的知识,一点点的啃吧!
首先遇到的问题是@PersistenceContext(unitName= "***")这句话什么意思?
有前期的基本知识,我只能简单明白这里是一个注解,引入了某种东西。那么这个注解到底什么作用呢?
首先Persistencecontext是什么?
Persistence context是由一组受托管的实体对象实例所构成的集合,它受Entitymanager的管理。Entitymanager追踪persistence context中所有对象的修改和更新情况,并根据指定的flush模式将这些修改保存到数据库中。
一旦persistence context被关闭,所有实体对象实例都会脱离EntityManager而成为非托管对象,任何对此对象的状态变更也将不会被同步到数据库。
persistence context在java中分为两种,分别是transaction-scopedpersistence context和extended persistence context。
T ransaction-scoped persistence context的persistencecontext只在事务范围内存在,它们会在事务结束后被关闭。当事务结束时,transaction-scoped persistence context将被销毁,而所有的托管实体对象实例也将处于游离状态(detached)。
只有受应用服务器管理的 persistencecontext才可以是事务范围的。换言之,只有标注了@PersistenceContext注解(或是其XML的等价描述)的EntityManager实例才可以是事务范围的。
对于extendedpersistence context现在没有用到还不太了解,不再多说了。
所以,我大概明白了这句话的作用!
这里从persistence.xml文件中引入了一个名称为“***”的数据源配置。而且,persistence.xml可以配置事务。有了这个标识,EntityManager就 可以多实体进行面向对象的管理。
暂时理解了这么多,以后有更深的理解再补充。