答案:四、Entity Beans
1. 建立数据库
我们已经成功的开发了一个Session Bean。不要觉得它简单,至少它是在JBuilder4中开发EJB的基本步骤。在这一章里,我们将要开发EJB的另外一种形态--Entity Beans。
一个Entity Bean是一个稳定的数据的对象表现,在我们的例子里,稳定的数据是一个关系数据库
首先,我们将在InterBase上建立一个数据库。
步骤:
1、 启动InterBase Server。
2、 启动InterClient中的InterServer。
3、 运行InterBase中的InterBase Winodws ISQL。
4、 在InterBase Winodws ISQL中,选择"File"-"Create Database…"。
5、 设置Database Name为"d:\project\quickstart\accounts.gdb,用户名和口令用"SYSDBA"、"masterkey"。点击OK。如图17。
6、 在InterBase Winodws ISQL窗口上部的文本框中,输入下面的建立数据库表的SQL语句:
CREATE TABLE account
( name VARCHAR(20) NOT NULL,
balance INTEGER NOT NULL,
PRIMARY KEY (name)
)
图17
7、 执行建立的SQL语句。如图18。
图18
8、 退出,回答"Yes"提交工作。
2. 开发Entity Beans
我们将利用JBuilder4所提供的向导来生成我们将要开发的Entity bean的代码,并且将它加入到前面的项目中。
首先,我们需要为刚才建立的数据库,指定JDBC驱动程序。退出JBuilder4。从InterClient的安装目录下(这里是:D:\InterBase Corp\InterClient)复制interclient.jar文件到JBuilder4安装目录下的lib子目录里面。用任意的文本编辑器打开JBuilder4安装目录下的bin子目录里面的jdbce.config文件。在此文件的尾部加上:
# Add other database drivers here
addpath ../lib/interclient.jar
保存此文件,重新打开JBuilder4。
检查以下我们前面所做的工作:
1、 在JBuilder4中,选择"Tools"-"JDBC Explorer"。
2、 在JDBC Explorer窗口中,选择"File"-"New…"。
3、 选择"Driver"为:interbase.interclient.Driver;"URL"通过旁边的浏览按钮定位在我们刚才建立数据库的地方(D:\project\quickstart\accounts.gdb)。如图19。
图19
4、"OK"之后,在JDBC Explorer中展开我们刚刚建立数据库URL。用户名:SYSDBA;密码:masterkey。登录之后,展开树,就可以看到我们所建立的表和表中的列了。如图20。
图20
现在,我们就可以开始建立我们的Entity bean了。
步骤:
1、 在JBuilder4中,选择"File"-"New…"-"Enterprise"标签--"EJB Entity Bean Modeler",点击"OK"按钮之后,在向导的步骤1里,将此Bean加入已经建立的EJB Group(quickstart.ejbgrp)。
2、 利用前面建立的数据库URL(Driver;interbase.interclient.Driver;URL: jdbc:interbase://localhost/D:\project\quickstart\ACCOUNTS.GDB),用户名:SYSDBA;口令:masterkey;登录到数据库中,点击"Next"。如图21。
图21
3、 根据提示,选择ACCOUNT表,"Next",选择表中所有的列,"Next"到"Finish"。
4、 保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
这样,我们实际上就已经完成了这个Entity Bean的开发工作。JBuilder4的向导已经在配置描述符中增加了一个入口和一个数据源的入口。
一个Entity Bean只不过是生成的代码。下面我们将建立一个客户程序来访问这个Entity Bean。这个客户程序将建立四个Entity Bean的实例,在数据库的Account表中建立四行数据。
使用JBuilder4的EJB Test Client Wizard,在这一次我们建立的测试客户程序,将依靠Account EJB,根据提示,使用缺省的类名:AccountTestClient1就可以了。利用向导,生成main函数,然后在生成的main函数的try…catch语句块中,"accountHome = (AccountHome) PortableRemoteObject.narrow(ref, AccountHome.class);"的后面,加入下面的代码:
Account ac1=accountHome.create("John",150);
Account ac2=accountHome.create("Paul",150);
Account ac3=accountHome.create("George",150);
Account ac4=accountHome.create("Ringo",150);
用鼠标右键点击项目窗格的AccountHome.java文件,选择"Properties…"。在弹出窗口中的"Build"标签中的"VisiBroker"标签中,选择"Generate IIOP",点击"OK"。
保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
3. 配置
我们仍然在JBuilder4中运行EJB容器。客户程序将依靠运行在EJB容器中的Entity Bean在数据库的Account表中建立四行数据。
首先,建立一个库,这样当我们运行EJB容器的时候,InterClient JDBC驱动程序能够被添加到classpath。
步骤:
1、 在JBuilder4中选择"Project"-"Project Properties…"。
2、 在"Required Libraries"标签中,点击"Add…"。
3、 在弹出的窗口中,点击"New…"。
4、 将JBuilder4安装目录下的lib子目录里的interclient.jar文件添加到"Library Paths"中。
5、 "Name"值设为:InterClient。
完成之后,就可以运行你建立的应用了。
确认VisiBroker Smart Agent、InterBase Server和InterClient的InterServer仍然在运行。
点击工具条上的 ,运行容器。等待容器初始化。
用鼠标右键点击项目窗口的AccountTestClient1.java,选择"run"。
完成之后,运行JDBC Explorer。
展开"interbase://localhost/D:\project\quickstart\ACCOUNTS.GDB",点击"Tables"下的ACCOUNT表。在右边窗格选择Data标签。你将看到程序所创建的新的四行数据。
如图22。
图22