快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
     } catch (Exception ex) {        throw new EJBException("ejbFindByPrimaryKey: " + ex.getMessage()); }      if (result) {        return primaryKey;      }      else {        throw new ObjectNotFoundException ("Row for id " + primaryKey + " not found.");      }    }

ejbFindByPrimaryKey 方法以 primaryKey 作为参数并返回它的值。

注意:

1.只有 EJB 容器可以调用ejbFindByPrimaryKey,而客户端不能直接调用 ejbFindByPrimaryKey 方法,客户端只能调用在 home 接口中定义的 findByPrimaryKey。

2.在 entity bean 类中开发人员必须实现ejbFindByPrimaryKey 方法。

3.一个 finder 方法的名字必须以 ejbFind 作为前缀。

4.返回值必须是主键或者是一个主键的集合。

throw 子句可以包含 javax.ejb.FinderException,和其他别的例外处理例程。如果一个finder 方法只要求返回唯一一个主键,如果主键不存在,则应该执行 javax.ejb.ObjectNotFoundException,ObjectNotFoundException 是FoundException的一个子类;如果 finder 方法要求返回的是一个主键的集合,则应该执行 FinderException 来处理。

业务处理方法

业务处理方法包含想在 Entity Bean 中实现的业务处理逻辑。通常业务处理方法不存取数据库,这允许开发人员可以把业务处理逻辑从数据库存取中独立出来。

在 AccountEJB entity bean 中包含下面的业务处理方法:

public void debit(double amount)      throw InsufficientBalanceException {      if (balance - amount <0){        throw new InsufficientBalanceException();      }      balance -= amount;    }    public void credit (double amount) {      balance += amount;    }    public String getFirstName() {      return firstName;    }    public String getLastName() {      return lastName;    }    public double getBalance() {      return balance;    }

AccountClient 程序中调用业务处理方法:

Account duke = home.create("123","Duke","Earl",0.00); Duke.credit(88.50); Duke.debit(20.25); Double balance = duke.getBalance();

注意:

1、业务处理方法的名称不能和 EJB 体系中定义的方法的名称冲突,其他的要求和 entity bean 和 sesson bean 中其它方法的要求相同。

2、可以在throw 子句中包含应用程序定义的例外处理例程,如 debit 方法执行InsufficientBalanceException。为了识别系统级错误,业务处理逻辑应该调用 javax.ejb.EJBException。

下面是对 AccountEJB 类中存取数据库的总结:

因为业务处理方法中不需要存取数据库,所以在 AccountEJB 类中的业务处理方法没有存取数据库。但业务处理方法可以通过 EJB 容器调用 ejbStore 来修改实例变量。当然开发人员也可以在 AccountEJB 类的业务处理方法中存取数据库,这依赖于应用程序的具体要求,在存取数据库之前必须连接数据库。

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

时间:2010-12-20

Home 接口(Interface)

在home 接口中定义让客户端创建和查找 entity bean 的方法。Account Home 接口如下:

import java.util.Collection;    import java.rmi.RemoteException;    import javax.ejb.*;    public interface AccountHome extends EJBHome {      public Account create(String id, String firstName, String lastName, double balance)        throws RemoteException, CreateException;       public Account findByPrim

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号