BMP实体Bean编写规则详解

本文详细介绍了如何编写一个银行账户实体Bean:AccountBean,包括实现步骤、接口定义、异常处理、部署描述等关键部分。

现就一个银行账户实体Bean:AccountBean的编写规则来说起。

 AccountEJB由三个文件组成:

l  实体Bean类(AccountBean)

l  Home接口(AccountHome)

l  Remote接口(Account)

步骤如下:

首先实现EntityBean接口:public class AccountBean implements EntityBean{. . .}

一、a.声明实体环境上下文:protected EntityContext ctx;

       b.声明Bean-管理 实体状态域

         private String accountID;// 注:主键不一定要与数据库中主键字段同名

         private String ownerName;

         private double balance;

       c.创建一个构造方法public AccountBean() {. . .}

二、编写商业逻辑方法

public void deposit(double amt) throwsAccountException { . . .}//存款

public void withdraw(double amt) throws AccountException {. . .}//取款

三、编写实体状态域的getter/setter方法

         public double getBalance() {. . .}

         public void setOwnerName(String name) {. . .}

         public String getOwnerName() {. . .}

         public String getAccountID() {. . .}

         public void setAccountID(String id) {. . .}

四、编写主接口商业逻辑方法(方法以"ejbHome"开头),它独立于任何一个具体账户实例

public double ejbHomeGetTotalBankValue() throws AccountException {. . . }

五、实现EntityBean接口中的方法(这些方法被容器调用)

public void ejbActivate() {...}

public void ejbRemove() throws RemoveException {...}

public void ejbPassivate() {...}

public void ejbLoad() {...}

public void ejbStore() {...}

public void setEntityContext(EntityContext ctx) {...}

public void unsetEntityContext() {...}

六、编写创建(必须至少一对ejbCreate、ejbPostCreate方法)和查找方法,方法以"ejb"前缀

public void ejbPostCreate(String accountID,String ownerName) {...}

public AccountPK ejbCreate(String accountID, String ownerName) throws CreateException{...}

public AccountPK ejbFindByPrimaryKey(AccountPK key) throws FinderException {...}

public Collection ejbFindByOwnerName(String name) throws FinderException {...}

七、定义从连接池获取jdbc数据库连接的方法

public Connection getConnection() throwsException{. . .}

 

-------------------------------------------------------------------------------------------------------------------------------------

 

现在来编写远程商业接口Account,它继承了EJBObject接口:public interface Account extends EJBObject {. . .}

一、上面AccountBean中的商业逻辑的接口

 public void deposit(double amt) throws AccountException, RemoteException;
 public void withdraw(double amt) throws AccountException, RemoteException;

 二、上面AccountBean中的getter/setter方法的接口

 public double getBalance() throws RemoteException;

 public String getOwnerName() throws RemoteException;
 public void setOwnerName(String name) throws RemoteException;

 public String getAccountID() throws RemoteException;
 public void setAccountID(String id) throws RemoteException;

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

现在来编写主接口AccountHome,它继承了EJBHome接口:public interface AccountHome extends EJBHome {. . .}

一、编写create()方法与AccountBean中ejbCreate()方法对应,返回类型为远程商业接口类型Account(账户)

   public Account create(String accountID, String ownerName) throws CreateException, RemoteException;

二、编写查找方法

   a.通过主键查找账户Account,与AccountBean中ejbFindByPrimaryKey()方法对应:

      public Account findByPrimaryKey(AccountPK key) throws FinderException, RemoteException;

   b.通过ownerName(账户拥有者)查找账户,与AccountBean中ejbFindByOwnerName()方法对应:

      public Collection findByOwnerName(String name) throws FinderException, RemoteException;

三、编写独立的主接口商业方法,它独立于任何一个具体的账户,与AccountBean中ejbHomeGetTotalBankValue()方法对应:

      public double getTotalBankValue() throws AccountException, RemoteException;

 

-------------------------------------------------------------------------------------------------------------------------------------

 

现在编写账户Account的主键类AccountPK,它实现Serializable接口:public class AccountPK implements java.io.Serializable {

主键类编写的格式很简单固定,如下:
  public String accountID;//主键

  public AccountPK(String id) {
     this.accountID = id;
  }

  public AccountPK() {
  }

  public String toString() {
     return accountID;
  }

  public int hashCode() {
     return accountID.hashCode();
  }
 
  public boolean equals(Object account) {
     return ((AccountPK)account).accountID.equals(accountID);
  } 
}

-------------------------------------------------------------------------------------------------------------------------------------

 

编写异常类AccountException,它继承Exception:

public class AccountException extends Exception {
public AccountException() {super();}

public AccountException(Exception e) {super(e.toString());}

public AccountException(String s) {super(s);}

}

 

-------------------------------------------------------------------------------------------------------------------------------------

部署描述信息:

ejb-jar.xml:

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

<ejb-jar>
 <enterprise-beans>
  <entity>
     <ejb-name>Account</ejb-name>
     <home>examples.AccountHome</home>
     <remote>examples.Account</remote>
     <ejb-class>examples.AccountBean</ejb-class>
     <persistence-type>Bean</persistence-type>
     <prim-key-class>examples.AccountPK</prim-key-class>
     <reentrant>False</reentrant>

 </entity>
 </enterprise-beans> 
</ejb-jar>

 

jboss.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">

<jboss>

   <enterprise-beans>

      <entity>
         <ejb-name>Account</ejb-name>
         <jndi-name>AccountHome</jndi-name>
      </entity>
   </enterprise-beans>

</jboss>


persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
   
 <persistence-unit name="bbmmppPU" transaction-type="JTA">
    <jta-data-source>java:/MySqlDS</jta-data-source>
 </persistence-unit>

</persistence>

至此,整个BMP实体Bean的编写流程就结束了!

详细的代码见:Myeclipse8+jboss5+BMP实体Bean开发实例详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值