JBuilder9+Weblogic7实战篇Entity Bean运用(三)

类别:Java 点击:0 评论:0 推荐:

JBuilder9+Weblogic7实战篇

ENTITY BEAN的运用(三)

                                                                      作者:黄 凯        

E_mail:[email protected]

 

六、建立Entity Bean的关系

6.1 Entity Bean的关系描述

    因为数据之间存在一定的关系,所以代表持久性数据的Entity Bean也应该有相应的关系。例如《Entity Bean运用(一)》中2.1节中创建的两个数据表student和locker,这两个代表学生和课桌的数据表是有关系的,二者通过lockerid相关联。那么作为代表这两个表的Entity Bean,student和locker也应该体现这种关系。Entity Bean的关系是通过在有关系的Entity Bean中建立关系字段完成的。

    EJB2.0支持单向、双向关系,并且Entity Bean之间可以存在一对一(1:1),一对多(1:N)或多对多(N:N)的关系。

6.2 Entity Bean关系开发实例

6.2.1打开《Entity Bean的运用(一)》中建立的comSample工程。参考2.2.9建立一个与locker数据表对应的Entity Bean。

6.2.2 在文档窗口的EJB Designer中单击Locker项,将Interface设置为local/remote,其他项采用默认值。

6.2.3 在文档窗口的EJB Designer中右键单击Locker项,选择Add/Relationship菜单项,将方向箭头指向要建立关系的Entity Bean Student。

6.2.4 将方向箭头指向Student后,可以看到在Locker中增加了一个字段student,该字段是代表与Locker相应的Student,称为关系字段。单击关系字段,可以设置此关系的属性。各项含义如下:

    ★ Relationship name: 关系的名字。

★ Multiplicity: 选择是一对一、一对多还是多对多的关系。

★ Navigability: 方向性。选择是单向还是双向的关系。如果选择unidirectional,表示选择单向关系,那么只在Locker中建立代表Student的关系字段。如果选择bidirectional,表示建立双向的关系,那么还将在Student中建立代表Locker的关系字段。

★ Cascade delete: 设置是否级联删除。级联删除指的是删除一个Entity Bean时,是否相应删除有关系的Entity Bean。此项设置为true还是false取决于具体应用的实际情况。例如在代表班级的Entity Bean与代表班级同学的Student之间建立了关系,由于班级不存在了,其成员student就也没有存在的必要了,所以此项应设置为true。对于本例而言,此处设置为false。

★ db-cascade-delete:Cascade delete的含义类似,只不过这里设置的是Entity Bean所代表的数据记录的级联删除。

    本例中设置Multiplicityone to one(1:1),Navigabilityunidirectional。其他项采用默认值。

 

6.2.5 单击“Relationship properties”界面中的Edit RDBMS Relation按钮,设置student和locker数据表的关联字段,即指定这两个表之间通过哪个字段对应起来。如果这两个表有名字相同的字段,例如student表中有一个名位lockerid的字段,locker表中如果也有名为lockerid的字段,那么Jbuilder会自认为这两个表是通过lockid字段关联的。但是本例的locker表中使用的字段不是lockerid,而是id,所以此处必须手工指定数据表的关联字段。

6.2.6 在“Weblogic RDBMS Relation Editor”界面中在id字段和lockerid字段之间用鼠标拉一条直线,表示这两个表通过字段id和lockerid关联起来。

6.2.7 在工程窗口单击查看Locker表的Bean类,可以看到其中增加了针对关系字段的存取操作的代码:

    public abstract void setStudent(cmpsample.Student student);

    public abstract cmpsample.Student getStudent();

    相应的ejb-jar.xml和weblogic-cmp-rdbms-jar.xml文件中对关系的描述信息也添加了。

6.2.8 在文档窗口的EJB Designer中右键单击Locker项,选择Add/Method菜单项增加一个方法,该方法返回与Locker关联的student信息。

    修改该方法的设置如下:

★      Method name: getStuInfo

★      Return type: String

★      Interface: remote

6.2.9 在文档窗口的EJB Designer中右键单击Locker项,选择Add/View Bean Source菜单项,修改getStuInfo()方法如下:

    public String getStuInfo()

    {

        String t = null;

        try

        {

            Student stuRemote = getStudent();

            t = "student id = " + stuRemote.getStuid() + ";student name = " +

                stuRemote.getStuname();

        }

        catch (Exception e)

        {}

        return t;

    }

6.2.10 重新编译、生成jar文件,然后使用Redeploy命令将新生成的Cmp.jar文件部署到Weblogic Server上。

6.2.11 建立Locker的客户端程序LockerTestClient1.java。

6.2.12 修改main()方法如下所示:

    public static void main(String[] args)

    {

        LockerTestClient1 client = new LockerTestClient1();

        client.findByPrimaryKey(new BigDecimal(2));

        client.getStuInfo();

    }

    该方法首先查找一个stuid为2的Student,然后调用getStuInfo()方法以获得该Student对应的Locker的信息。

6.2.13 运行该程序,验证结果。

 

参考

电子工业出版社   《J2EE应用开发(Jbuilder+Weblogic)》

 

我的文章首发牛耳论坛(www.newer.com.cn/bbs)和程序员论坛(www.csdn.net),欢迎转载,不过,请保留作者以及修订者的名字,谢谢。

 

本文地址:http://com.8s8s.com/it/it17194.htm