MyEclipse6Java开发中文教程 Entity ManagerFactory emf 。前面已经讲过,标注仅仅是一个标签而已,一定要有容器来处理这个标签,这些值才能被 设置进去,之后就可以直接使用变量来进行操作了。 在介绍Ent! Manager之前,我们需要了解以下实体的生命周期这个概念。我们知道实 体像人一样,具有出生,学习,服务,死亡等状态,对实体来说,它们的状态规定为: 1.新实体(new 2.持久化实体( managed) 3.分离的实体( detached) 4.删除的实体( removed) 而通过 Entity Manager,可以在它们的不同状态之间实现切换。我们可以简单的通过下表来 确定一个实体的状态 状态名 作为Java对象存在在实体管理器中存在|在数据库中存在 managed √√ detached 而在图136中则列出了状态改变和 Entity Manager之间的关系。图中的em表示实体管理 器( Entity Manager),而ⅸ则表示 Entity Transaction,实体事务管理器。和 Hibernate一样 对实体类的某些操作必须在事务中进行才能成功,这也是本章后面的内容介绍为什么要使用 Spring来整合JPA的一个重要原因。 eh. refresh New em.persisto-Managedtx commit -( Detached emclear em finder query em merge em remove Removed 图136实体状态转换关系图 有了 EntityManager之后,我们就可以像在 Hibernate的seon对象中所做的那样, 对实体进行各种各样的操作了,包括增删改查,刷新,根据主键查找对象等等。图135列 出了 Entity Manager所具有的一些方法,而这些方法的大部分都是和 Hibernate中的 Session 对象很相似的,毕竟所有的ORM都是实现增删改查嘛。我们介绍一些主要的方法 · persist(object)-使实体类从new状态或者 removed转变到 managed状态,并将数 据保存到底层数据库中 remove( Object)-将实体变为 removed状态,当实体管理器关闭或者刷新时,会真正 的删除数据 fnd( Class entity Class, Object key)-以主键查询实体对象, entity Class是实体的类 key是主键值 ● flush0-将实体和底层的数据库进行同步,当我们调用 persist(), merge()或 刘长炯著MyEclipse 6 Java 开发中文教程 15 刘长炯著 EntityManagerFactory emf; 。前面已经讲过,标注仅仅是一个标签而已,一定要有容器来处理这个标签,这些值才能被 设置进去,之后就可以直接使用变量来进行操作了。 在介绍 EntityManager 之前,我们需要了解以下实体的生命周期这个概念。我们知道实 体像人一样,具有出生,学习,服务,死亡等状态,对实体来说,它们的状态规定为: 1. 新实体(new) 2. 持久化实体(managed) 3. 分离的实体(detached) 4. 删除的实体(removed) 而通过 EntityManager,可以在它们的不同状态之间实现切换。我们可以简单的通过下表来 确定一个实体的状态: 状态名 作为 Java 对象存在 在实体管理器中存在 在数据库中存在 new √ × × managed √ √ √ detached × × √ removed √ √ × 而在图 13.6 中则列出了状态改变和 EntityManager 之间的关系。图中的 em 表示实体管理 器(EntityManager),而 tx 则表示 EntityTransaction,实体事务管理器。和 Hibernate 一样, 对实体类的某些操作必须在事务中进行才能成功,这也是本章后面的内容介绍为什么要使用 Spring 来整合 JPA 的一个重要原因。 图 13.6 实体状态转换关系图 有了 EntityManager 之后,我们就可以像在 Hibernate 的 Session 对象中所做的那样, 对实体进行各种各样的操作了,包括增删改查,刷新,根据主键查找对象等等。图 13.5 列 出了EntityManager所具有的一些方法,而这些方法的大部分都是和Hibernate中的Session 对象很相似的,毕竟所有的 ORM 都是实现增删改查嘛。我们介绍一些主要的方法: z persist(Object) – 使实体类从 new 状态或者 removed 转变到 managed 状态,并将数 据保存到底层数据库中。 z remove(Object) – 将实体变为 removed 状态,当实体管理器关闭或者刷新时,会真正 的删除数据 z find(Class entityClass, Object key) – 以主键查询实体对象,entityClass 是实体的类, key 是主键值 z flush() – 将实体和底层的数据库进行同步,当我们调用 persist( ), merge( )或