JPA EntitManager初体验

原文链接:http://blog.csdn.net/han_yankun2009/article/details/45361787

 

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与数据库数据之间的同步!

 

引入实体管理器


依赖注入EntityManaer

 EJB容器中,使用依赖注入来创建EntityManager

 

如:

[java] view plain copy print ? 在CODE上查看代码片
  1. @PersistenceContext(unitName="exam-entity")  
  2. protectedEntityManager em;  

@PersistenceContex表示标注的属性 em 是一个实体管理器EntityManager对象,EJB容器会根据 unitName 的值来初始化EntityMangerunitName 的值为persistence.xml中配置的unit中的name

如:

[html] view plain copy print ? 在CODE上查看代码片
  1. <persistence-unitnamepersistence-unitname="exam-entity" transaction-type="JTA">  

操作实体Entity


 基本的操作有

persist

Find

Merge

Remove

createQuery

 

2.1添加Entity

 实体管理器中的persist方法可以在数据中添加一条记录

[java] view plain copy print ? 在CODE上查看代码片
  1. Public void persist(object entity)  

 

实例代码如下:

[java] view plain copy print ? 在CODE上查看代码片
  1. User user= new User();  
  2. user.setId(UUID.randomUUID().toString());  
  3. user.setName("田老师");  
  4. em.persist(user);  

 

2.2根据主键查找Entity


find方法根据主键查找对应实体

[java] view plain copy print ? 在CODE上查看代码片
  1. Public <T> find (Class<T> entityClass,Object primaryKey);  

primaryKey为主键的值。如:查找iduuid的实体代码

[java] view plain copy print ? 在CODE上查看代码片
  1. User user=em.find(User.class,"uuid");  

 

2.3更新 Entity


merge方法可以将实体更新到数据库中,

[java] view plain copy print ? 在CODE上查看代码片
  1. Public <T> T merge (T entity);  

其中,可以通过find方法先查找出来,然后重新设置值后,最后更新

[java] view plain copy print ? 在CODE上查看代码片
  1. User user=em.find(User.class,"uuid");  
  2. user.setName("李老师");  
  3. Em.merge(user);  

2.4删除Entity


remove方法删除数据库中一条记录

[java] view plain copy print ? 在CODE上查看代码片
  1. Pubilc void remove(Object entity);  

也是通过find方法先查找出来,然后删除

[java] view plain copy print ? 在CODE上查看代码片
  1. User user=em.find(User.class,"uuid");  
  2. em.remove(user);  

 

小结:


以上是对JPA的初步认识,是最基本的增删该查是没有问题的,当然了这里介绍的只是初步认识,并没有设计抽象等操作,接下来 是 进阶篇幅介绍。

你可能感兴趣的:(JPA EntitManager初体验)