快速业务通道

EJB技术的数据库应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
B 容器调用 ejbRemove 方法,ejbRemove 方法从数据库中删除一个Entity Bean 状态数据。代码如下:

public void ejbRemove() {      try {        deleteRow(id);      } catch (Exception ex){        throw new EJBException ex("ejbRemove:"+exgetmessage());      }    }

如果ejbRemove 方法遇到系统级错误,将执行javax.ejb.EJBException. 如果遇到应用级错误,将执行javax.ejb.RemoveException。

entity bean 的状态数据也可以通过数据库的 delete 语句直接删除数据。

EjbLoad 方法和 ejbStore 方法

EJB 容器需要维持 Entity Bean 的实例变量与数据库中相应值的同步,这需要调用 ejbLaod 方法和ejbStore 方法。ejbLoad 方法用数据库中的数据刷新变量的值,ejbStore 方法把变量的值写入到数据库中。客户端不能调用 ejbLoad 方法和ejbStore 方法。

如果业务处理的方法关系到事物处理,EJB 容器要在业务处理方法调用之前调用 ejbLoad 方法刷新数据,业务处理方法执行之后,EJB 容器又立即调用 ejbStore 方法把数据存储到数据库中。因为 EJB 容器调用ejbLoad方法和ejbStore 方法,开发人员在业务处理方法中不必刷新和存储实例变量的值。

如果ejbLoad 方法和ejbStore 方法不能在低层数据库中定位 Entity Bean,将执行 javax.ejb.NoSuchEntityException。

在 AccountEJB 类中,ejbLoad 方法调用 loadRow 方法,loadRow 则发出一个 select 语句从数据库提取数据分配给实例变量;ejbStore 方法调用 storeRow 方法,storeRow 方法则用 update 语句把实例变量的值存储到数据库。代码如下:

public void ejbLoad(){      try{        loadRow();      }catch (Exception ex){        throw new EJBException ("ejbLoad:"+ex.getMessage());      }    }    public void ejbStore(){      try{        storeRow();      }catch (Exception ex){        throw new EJBException ("ejbStore:"+ex.getMessage());      } }

Finder 方法 :

Finder 方法允许客户端查找 entity bean ,AccountClient 中有三种方法查找entity bean:

Account jones = home.findByPrimaryKey("836");      Collection c home.findByLastName("Smith");      Collection c home.findInRange(20.00,99.00);

Entity bean 类必须实现相应的方法,并且文件名以ejbFind 前缀开始,如:AccountEJB 类实现 ejbFindByLastName 的方法如下:

public Collection ejbFinfBylastName(String lastName)      throw FinderException {      Collection result;      Try {        Result = selectByLastName(lastName);      } catch (Exception ex) {        throw new EJBException("ejbFindByLastName" + ex.getMessage()); }      if (result.isEmpty()){        throw new ObjectNotFoundException("No row found.");      }    else {        return result}  }

EJB技术的数据库应用(4)

时间:2010-12-20

应用系统中特定的 finder,如 ejbFindByLastName 和ejbFindInRange,是可选的,但是必须含有 ejbFindByPrimaryKey 方法,ejbFindByPrimaryKey 方法用主键作参数,用来定位一个 entity bean 的状态数据,下面是 ejbFindByPrimaryKey 方法的代码:

public String ejbFindByPrimaryKey(String primaryKey)      throws FinderException {      boolean result;      try {        result = selectByPrimaryKey(primaryKey);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号