ENTITYMANAGER.FLUSH的功能简介说明

书欣 Java经验 发布时间:2022-12-28 17:23:38 阅读数:5141 1
下文笔者讲述ENTITYMANAGER.FLUSH的功能简介说明,如下所示

ENTITYMANAGER简介

EntityManager是JPA中用于增删改查的接口
  它的功能用于连接内存中的java对象和数据库的数据存储
Entity生命周期中的Managed,Detached,Removed三种状态变化过程
entityManager状态变化
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(Class entityClass, 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或直到刷新被触发
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202212/16722206585219.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者