EntityManager,顾名思义,实体管理器,负责管理Entity对象,对Entity的操作包括添加,删除,修改和查询,都是通过实体管理器来实现的。它由EntityManagerFactory所创建。EntityManagerFactory,作为EntityManager的工厂,包含有当前O-R映射的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(PersistenceUnit),每个持久化单元可认为是一个数据源的映射
PersistenceContext,称为持久化上下文,被管理的实体对象(Entity)的数据。每个EntityManager,都会跟一个PersistenceContext相关联。PersistenceContext中存储的是实体对象的数据,而关系数据库中存储的是记录,EntityManager正是维护这种OR映射的中间者,它可以把数据从数据库中加载到PersistenceContext中,也可以把数据从PersistenceContext中持久化到数据库,EntityManager通过Persist、merge、remove、refresh、flush等操作来操纵PersistenceContext与数据库数据之间的同步!
1 引入实体管理器
依赖注入EntityManaer
在EJB容器中,使用依赖注入来创建EntityManager。
如:
@PersistenceContext(unitName="exam-entity") protectedEntityManager em;
@PersistenceContex表示标注的属性
em 是一个实体管理器EntityManager对象,EJB容器会根据 unitName 的值来初始化EntityManger。unitName 的值为persistence.xml中配置的unit中的name值
如:
<persistence-unitname="exam-entity" transaction-type="JTA">
2 操作实体Entity
基本的操作有
persist
Find
Merge
Remove
createQuery
2.1添加Entity
实体管理器中的persist方法可以在数据中添加一条记录
Public void persist(object entity)
实例代码如下:
User user= new User(); user.setId(UUID.randomUUID().toString()); user.setName("田老师"); em.persist(user);
2.2根据主键查找Entity
find方法根据主键查找对应实体
Public <T> find (Class<T> entityClass,Object primaryKey);
primaryKey为主键的值。如:查找id为uuid的实体代码
User user=em.find(User.class,"uuid");
2.3更新 Entity
merge方法可以将实体更新到数据库中,
Public <T> T merge (T entity);
其中,可以通过find方法先查找出来,然后重新设置值后,最后更新
User user=em.find(User.class,"uuid"); user.setName("李老师"); Em.merge(user);
2.4删除Entity
remove方法删除数据库中一条记录
Pubilc void remove(Object entity);
也是通过find方法先查找出来,然后删除
User user=em.find(User.class,"uuid"); em.remove(user);
小结:
以上是对JPA的初步认识,是最基本的增删该查是没有问题的,当然了这里介绍的只是初步认识,并没有设计抽象等操作,接下来 是 进阶篇幅介绍。