`
lym6520
  • 浏览: 696008 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

EntityManager--实体管理器

阅读更多
这篇文章被我落在qq空间好寂寞啊,今天开始学习hiberante了,也该让这篇很久前整理的文章出来透透气了(其实主要是hibernate和ejb3.0有很多相似)

Entity Manager API:用于实体操作的标准API
  javax.persistence.EntityManager管理实体生命周期,并公开了多个在实体上执行CRUD操作的方法。
  EntityManager API在事务上下文中调用。可以在EJB容器外部(例如,从一个Web应用程序)调用它,而无需会话bean外观。
  在执行任何实体操作之前,必须获取EntityManager实例。可以使用容器管理或应用程序管理的实体管理器,可以使用JNDI查找或依赖注入来获取EntityManager实例。正如其名称所暗示的,Java EE容器管理着容器管理实体管理器的生命周期。它可能主要在企业Java应用程序中使用。
  可以使用PersistenceContext注入获取容器管理实体管理器实例,如下所示:
@PersistenceContext(unitName="onjava")
private EntityManager em;   
如果使用应用程序管理的实体管理器,则必须管理其生命周期。可以创建一个应用程序管理实体管理器实例,如下所示:
@PersistenceUnit(unitName="onjava")
private EntityManagerFactory emf;
private EntityManager em = emf.createEntityManager();   
然后可以使用EntityManager实例在实体上执行CRUD操作。要关闭应用程序管理实体管理器实例,请在完成工作后调用em.close()方法。
  如前所述,必须在事务上下文中执行涉及任何数据库更改的实体管理器操作。

下面列出了EntityManager接口的一些用于执行实体操作的关键方法。
方法                                                                                                                                       用途
public void persist(Object entity);                                                                             持久化实体实例。
public <T> T merge(T entity);                                                                                    合并分离的实体实例。
public void remove(Object entity);                                                                             移除实体实例。
public <T> T find(Class<T> entityClass, Object primaryKey);                            通过主键检索实体实例。
public void flush();                                                                                                       使实体状态与数据库同步。


  使用persist()方法持久化实体实例。例如,如果想持久化Contractor实例,请使用以下代码:
@PersistenceContext(unitName="onjava")
private EntityManager em;
...
  Customer customer=new Customer();
  customer.setName("麦兜");
  customer.setEmail("52461883@qq.com");
  em.persist(pte);

  在持久化实体时,如果此关系的CascadeType被设置为PERSIST或ALL,则任何对关联实体的状态更改也将被持久化。除非正在使用扩展的持久上下文,否则实体将在事务终止后分离。合并操作允许将分离的实体实例与持久上下文合并;分离实体的状态将与数据库同步。这将有助于摆脱EJB 2.x中常见的数据传输对象(Data Transfer Object,DTO)反模式,因为作为POJO的实体可以在层与层之间传输。惟一的要求是实体类必须实现java.io.Serializable接口。
分享到:
评论

相关推荐

    java-entitymanager-generic-dao:使用 Hibernate EntityManager (Spring Boot) 的通用 Dao

    在这个实现中,我们使用 Spring Framework ORM EntityManager 使用预配置的数据源来实现基本操作,例如从数据库中插入、更新、删除和检索实体。 这种实现的主要优点是,由于这个 dao 是使用 Java 泛型实现的,我们...

    EntityManager,实体类数据库访问管理层

    ---EntityManager.cs(实体类管理) ---Expressions.cs(实体类表达式查询) ---Expression.cs(实体类表达式) ---OrderByExpressions.cs(排序表达式查询) ---OrderByExpression.cs(排序表达式) ---ObjectValues -------...

    JPA学习笔记-EJB-05JPA实体对象状态和实体对象的高级操作

    虽然持久化实体的状态在ORM中是一个老生常谈的问题,...在Web一般情况下也都是交给Spring去管理实体管理器(EntityManager),所以我们还是有必要啰嗦一下,至于肢体的高级操作,实际上也就是实体监听器的使用而已。

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    JSR 303 为实体验证定义了一个元数据模型和API 前端技术选型 JS框架:jQuery 1.8 CSS框架:Twitter Bootstrap 项目所需jar包列表 antlr-2.7.7.jar classmate-1.0.0.jar com.springsource.net.sf.cglib-2.2.0.jar ...

    Artemis 是一个高性能的游戏实体系统框架

    Artemis 是一个高性能的游戏实体系统框架,用 Java 编写,是一个在游戏世界中管理实体的框架。 Artemis-Framework-master.zip 具有以下条目。 LICENSE/*from ww w .j a v a 2s. com*/ README.md artemis/.project ...

    jpa-hibernate-alura:Alura的Java和JPA课程

    Alura-Java和JPA课程:使用JPA2和Hibernate持久化对象 这是我在课程之后开发的...删除EntityManager实体 状态摘要 实体之间的映射关系 实体之间的关系 相关转移到帐户 处理日期 定义关系的基数 持久关系中涉及的对象

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    10.8.3 为全部实体配置默认监听器 450 10.8.4 排除监听器 452 10.9 本章小结 455 第11章 JPA的查询支持 456 11.1 查询API 457 11.1.1 面向对象的JPQL 457 11.1.2 查询API简介 457 11.2 执行查询 459 11.2.1 使用...

    EJB3.0 实例教程 -- 切片1

    6.5 持久化实体管理器ENTITYMANAGER..43 6.5.1 Entity获取find()....43 6.5.2 添加 persist().........43 6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 EJB3 QL操作createQuery() 44 ...

    JPA-eclipselink-project:使用 EclipseLink 实现的 JPA 项目示例

    Java Persistence API 基于实体,这些实体是简单的带注释的 POJO,以及这些实体的管理器 (EntityManager),它提供处理它们的功能(添加、修改、删除、搜索)。 该管理器负责管理实体的状态及其在数据库中的持久性。...

    Generic Entity Manager-开源

    用Lua绑定用C ++编写的通用游戏实体管理器。 在早期的atm。 游戏实体系统-当前正在寻求其他项目成员。

    Java持久层的三种查询方式

    // 获得实体管理器 EntityManager em = … // 建立SQL查询 String getByFirstName = "SELECT * FROM contacts c WHERE c.first_name = ?1"; // 创建查询实例 Query query = em.createNativeQuery(g

    EJB3.0 实例教程 -- 切片2

    6.5 持久化实体管理器ENTITYMANAGER..43 6.5.1 Entity获取find()....43 6.5.2 添加 persist().........43 6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 EJB3 QL操作createQuery() 44 ...

    SpringData框架中的JPA工具类

    模板代码,解决实体管理器工厂的浪费资源和耗时问题.第一次访问getEntityManager方法:经过静态代码块创建一个factory对象,再调用方法创建一个EntityManager对象,第二次方法getEntityManager方法:直接通过一个已经...

    OpenJPA 2.2.1 API (CHM格式)

    在线是指所有针对实体的操作必须在一个 EntityManager 范围中运行。这两个特征,加上 EntityManager 是非序列化的,无法在网络上传输,导致 JPA 应用无法适用于企业应用中的 C/S 实现模式。OpenJPA 扩展了这部分接口...

    school-rest-api

    数据可以作为实体的数据,可以使用EntityManager和相应的存储库进行持久化和检索。 MariaDB数据库。REST API端点顾客列表[GET] http://127.0.0.1:8000/api/customers //response{ "code" : 200 , "message" : ...

    soxJava

    soxJava介绍基于Spring Boot 少即是多为...警惕浏览器安全线程安全,请求隔离没有实体和存储类,使用实体管理器替代运行很快,没有警告,没有坑原始码级最后,祝您使用愉快真正的最后,它使用令人讨厌膈应的MIT协议发布

    J2EE应用开发详解

    294 16.3.5 数据库连接池中使用JDBC 297 16.4 小结 302 第17章 ORM与Java持久化机制 303 17.1 ORM概述 303 17.2 域模型 304 17.3 实体域对象的持久化模式 304 17.4 JPA 305 17.4.1 实体 306 17.4.2 EntityManager ...

    Hibernate实战(第2版 中文高清版)

     12.3.4 实体监听器和回调   12.4 小结   第13章 优化抓取和高速缓存   13.1 定义全局抓取计划   13.1.1 对象获取选项   13.1.2 延迟的默认抓取计划   13.1.3 理解代理   13.1.4 禁用代理生成   ...

    GameEngine:结合 Kilobolt 框架的轻量级游戏引擎,用于 Android 开发

    未命名的游戏引擎 这是一个未命名的游戏引擎,任何人都可以使用。 它的预期目的是用于 android,但是,由于 ... 顾名思义,它是管理实体的东西。 它相当简单,包括必要的内容; 创建/删除、更新和渲染。 要创建实

    java8集合源码分析-SEWM:缝纫机

    配置sessionfactory使用packagesToScan属性自动扫描entity,不必在hibernate中配置实体类 移植到JPA使用Hibernate 5.2.8作为provider 由从JPA传回来Hibernate,简直是噩梦! 脱管状态对象不能直接删除,必须merge()...

Global site tag (gtag.js) - Google Analytics