- 注册时间
- 2011-3-22
- 最后登录
- 2013-6-27
- 在线时间
- 11644 小时
- 阅读权限
- 150
- 积分
- 62779
- 帖子
- 28923
- 精华
- 1
- UID
- 6
|
核心提示: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)
示例代码如下所示。- CustomerEO customer = new CustomerEO();
- customer.setId(1);
- customer.setName("Sun System");
- customer.setShortName("Sun");
- 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的实体代码如下所示。- CustomerEO customer = entityManager.find(CustomerEO.class, new Integer(1));
- entityManager. remove (customer);
复制代码 3.3.6 执行查询
EntityManager类中的createQuery方法可以查询数据,并返回查询结果集,其声明如下所示。- public Query createQuery(String queryString);
复制代码 其中,queryString为查询的SQL语句。例如,查询所有的CustomerEO可以使用以下代码。- String sql = "SELECT c FROM CustomerEO c";
- Query query = entityManager.createQuery(sql);
- List result = query.getResultList();
复制代码 |
-
1
查看全部评分
-
|