天天看点

EJB3.0实体Bean(三)

6.5 持久化实体管理器EntityManager

EntityManager 是用来对实体Bean进行操作的辅助类。他可以用来产生/删除持久化的实体Bean,通过主键查找

实体bean,也可以通过EJB3 QL语言查找满足条件的实体Bean。EntityManager 的获取前面已经介绍过,可以通

过@PersistenceContext注释由EJB容器动态注入,例:

@PersistenceContext(unitName="foshanshop")

EntityManager em;

下面介绍EntityManager 常用的API

6.5.1 Entity 获取find()

如果知道Entity的唯一标示符,我们可以用find()方法来获得Entity。

@PersistenceContext

protected EntityManager em;

Person person = em.find(Person.class, Integer.valueOf(personid));

6.5.2 添加persist()

保存Entity 到数据库。

@PersistenceContext

protected EntityManager em;

Person person = new Person();

Jboss EJB3.0实例教程

版权所有:黎活明

person.setName(name);

//把数据保存进数据库中

em.persist(person);

6.5.3 更新Merge()

把Entity 更新到数据库。

@PersistenceContext

protected EntityManager em;

Person person = em.find(Person.class, Integer.valueOf(personid));

//更新数据

em.merge (person);

6.5.4 删除Remove()

把Entity从到数据库中删除。

@PersistenceContext

protected EntityManager em;

Person person = em.find(Person.class, Integer.valueOf(personid));

//如果级联关系cascade=CascadeType.ALL,在删除person时候,也会把级联对象删除。把cascade

属性设为cascade=CascadeType.REMOVE 有同样的效果。

em.remove (person);

6.5.5 执行EJB3 QL 操作createQuery()

@PersistenceContext

protected EntityManager em;

Query query = em.createQuery("select p from Person p where p. name=’黎明’");

List result = query.getResultList();

Iterator iterator = result.iterator();

while( iterator.hasNext() ){

//处理Person

}

// 执行更新语句

Query query = em.createQuery("update Person as p set p.name =?1 where p. personid=?2");

query.setParameter(1, “黎明” );

query.setParameter(2, new Integer(1) );

Jboss EJB3.0实例教程

版权所有:黎活明

int result = query.executeUpdate(); //影响的记录数

// 执行更新语句

Query query = em.createQuery("delete from Person");

int result = query.executeUpdate(); //影响的记录数