设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 1768|回复: 0
打印 上一主题 下一主题

EJB JPA数据库持久层开发实践详解(一) [复制链接]

Rank: 8Rank: 8

跳转到指定楼层
1#
那个谁 发表于 2011-6-22 16:42:02 |只看该作者 |倒序浏览
    核心提示:3.3使用EntityManager操作实体 顾名思义,实体管理器EntityManager是负责管理Entity的对象。对Entity的操作包括添加、删除、修改和查询,都是通过实体管理器来实现的。 3.3.1 依赖注入EntityManager 在EJB容器中,EntityManager的获得可以通过标注,使用依赖
    3.3 使用EntityManager操作实体

    顾名思义,实体管理器EntityManager是负责管理Entity的对象。对Entity的操作包括添加、删除、修改和查询,都是通过实体管理器来实现的。
    3.3.1  依赖注入EntityManager

    在EJB容器中,EntityManager的获得可以通过标注,使用依赖注入来创建EntityManager实例,代码如下所示。

        @PersistenceContext(unitName = "demo")

    private EntityManager entityManager;

    @PersistenceContex 表示标注的属性entityManager是一个实体管理器EntityManager对象,EJB容器会根据unitName的值来初始化 EntityManager。其中unitName的值为上文中在persistence.xml中配置的<persistence- unit>中name的值。

    虽然这里没有看到new实体管理器EntityManager的代码,但一旦将该类放置到EJB容器中,容器将会自动依赖注入,初始化该实例。
    3.3.2  添加Entity

    EntityManager类中的persist方法可以在数据库中添加一条记录,其声明如下所示。

    public void persist(Object entity)

    示例代码如下所示。
  1.         CustomerEO customer = new CustomerEO();

  2.         customer.setId(1);

  3.         customer.setName("Sun System");

  4.         customer.setShortName("Sun");

  5.         entityManager.persist(customer);
复制代码
3.3.3  根据主键查找Entity

    EntityManager类中的find方法可以根据主键的值查找对应的实体。

    public <T> T find(Class <T> entityClass, Object primaryKey);

    其中,entityClass为实体对象,primaryKey为主键的值。例如,查找id为1的实体代码如下所示。

    CustomerEO instance = entityManager.find(CustomerEO.class, new Integer(1));
    3.3.4  更新Entity

    EntityManager类中的merge方法可以将实体更新到数据库中,其声明如下所示。

    public <T> T merge(T entity);

    其中,entity为所要更新的实体对象,可以通过find方法先查找出来,然后重新设置值后,最后更新。例如,更新id为1的实体代码如下所示。
CustomerEO customer = entityManager.find(CustomerEO.class, new Integer(1));

    customer.setName("New Name");

    customer.setShortName("New Short Name");

    entityManager.merge(customer);
3.3.5  删除Entity

    EntityManager类中的remove方法可以删除数据库中的一条记录,其声明如下所示。

    public void remove(Object entity);

    其中,entity为所要删除的实体对象,可以通过find方法先查找出来,然后删除。例如,删除id为1的实体代码如下所示。
  1. CustomerEO customer = entityManager.find(CustomerEO.class, new Integer(1));

  2.     entityManager. remove (customer);
复制代码
3.3.6  执行查询

    EntityManager类中的createQuery方法可以查询数据,并返回查询结果集,其声明如下所示。
  1.     public Query createQuery(String queryString);
复制代码
其中,queryString为查询的SQL语句。例如,查询所有的CustomerEO可以使用以下代码。
  1.     String sql = "SELECT c FROM CustomerEO c";

  2.     Query query = entityManager.createQuery(sql);

  3.     List result  = query.getResultList();
复制代码
1

查看全部评分

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-6 05:36 , Processed in 1.055305 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部