EntityManager 是用来对实体Bean 进行操作的辅助类。他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean。实体Bean 被EntityManager 管理时,EntityManager跟踪他的状态改变,在任何决定更新实体Bean 的时候便会把发生改变的值同步到数据库中。当实体Bean 从EntityManager 分离后,他是不受管理的,EntityManager 无法跟踪他的任何状态改变。EntityManager 的获取前面已经介绍过,可以通过@PersistenceContext 注释由EJB 容器动态注入。
一般的开发都是需要每一个实体类都要构建一个DAO去继承JPA的一些类,我不咋喜欢这样的感觉,我比较喜欢一个项目中简洁不乱,所有偷懒的写了一个四不像的通用DAO
1、首先可以去官网看一下,了解一下entitymanager的一些方法
persist() :添加实体Bean
flush() :将实体的改变立刻刷新到数据库中
merge () :比较麻烦,用好了很不错,配合flush
Remove() :删除对象
createQuery() :返回Query对象,以执行JPQL语句
createNativeQuery() :返回Query对象,以执行SQL语句
refresh() :刷新实体Bean,以得到对新对象
contains(): 检测实体当前是否被管理中
clear() 分离所有当前正在被管理的实体
2、用@PersistenceContext动态注入Entitymanager
先来一个BaseDAO
再写一个实现类BaseDAOimpl,其中注意的是@Transactional事务的注入
这一套就可以完成一个项目的差不多增删改查了,需要其他特殊功能的可以自行添加