ENTITYMANAGER.FLUSH的功能简介说明
下文笔者讲述ENTITYMANAGER.FLUSH的功能简介说明,如下所示
ENTITYMANAGER简介
EntityManager是JPA中用于增删改查的接口 它的功能用于连接内存中的java对象和数据库的数据存储Entity生命周期中的Managed,Detached,Removed三种状态变化过程

New: 瞬时对象 尚未有id 还未和Persistence Context建立关联的对象 Managed: 持久化受管对象 有id值 已经和Persistence Context建立了关联的对象 Datached: 游离态离线对象 有id值 但没有和Persistence Context建立关联的对象 Removed: 删除的对象 有id值 尚且和Persistence Context有关联 但是已经准备好从数据库中删除

1、entityManager.persist(Object entity); 新增数据; 如果entity的主键不为空,而数据库没有该主键,会抛出异常; 如果entity的主键不为空,而数据库有该主键,且entity的其他字段与数据库不同,persist后不会更新数据库; 2、entityManager.find(ClassentityClass, Object primaryKey); 根据主键查找数据; 如果主键格式不正确,会抛出illegalArgumentException异常; 如果主键在数据库未找到数据返回null; 3、entityManager.remove(Object entity); 删除数据; 只能将Managed状态的Entity实例删除,由此Entity实例状态变为Removed; 4、entityManager.merge(T entity); 将Detached状态的Entity实例转至Managed状态; 5、entityManager.clear(); 将所有的Entity实例状态转至Detached状态; 6、entityManager.flush(); 将所有Managed状态的Entity实例同步到数据库; 7、entityManager.refresh(Object entity); 加载Entity实例后,数据库该条数据被修改,refresh该实例,能得到数据库最新的修改,覆盖原来的Entity实例; 8、entityManager.unwrap(Session.class):获取Session对象
EntityManager.flush的功能
EntityManager.flush()操作在提交事务之前将所有更改写入数据库。 默认情况下 在事务提交之前 JPA通常不会将更改写入数据库 DML INSERT,UPDATE,DELETE不会被执行 直到commit或直到刷新被触发
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。