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

原创 2003年09月23日 23:41:00

JBuilder9+Weblogic7实战篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ENTITY BEAN的运用(三)

                                                                      作者:黄 凯        

E_mail:hk_sz@163.com

 

六、建立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 one1: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),欢迎转载,不过,请保留作者以及修订者的名字,谢谢。

 

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

JBuilder9+Weblogic7实战篇ENTITY BEAN的运用(二)                                                             ...
  • kanaima
  • kanaima
  • 2003年09月23日 23:35
  • 925

JBuilder9+Weblogic7实战篇ENTITY BEAN的运用

五、使用EJB QL开发查询5.1 什么是EJB QL    在关系数据库的操作中查询是经常使用的,主要是通过select语句完成的。Entity Bean作为代表数据库中数据的持久性组件也同样需要查...
  • Arias
  • Arias
  • 2005年03月22日 17:52
  • 868

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

JBuilder9+Weblogic7实战篇ENTITY BEAN的运用(四)                                                             ...
  • kanaima
  • kanaima
  • 2003年09月24日 20:30
  • 941

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

JBuilder9+Weblogic7实战篇ENTITY BEAN的运用(一)                                                             ...
  • kanaima
  • kanaima
  • 2003年09月23日 23:33
  • 1060

ENTITY BEAN的运用(三)

六、建立Entity Bean的关系6.1 Entity Bean的关系描述    因为数据之间存在一定的关系,所以代表持久性数据的Entity Bean也应该有相应的关系。例如《Entity Bea...
  • cnham
  • cnham
  • 2005年10月12日 16:41
  • 912

JBuilder9+Weblogic7实战篇之Filter运用篇

JBuilder9+Weblogic7实战篇运用篇(Filter过滤器在Jbuilder9中的运用)                                                  ...
  • kanaima
  • kanaima
  • 2003年08月31日 10:51
  • 748

bean、javabean、entity、dto、ejb、pojo都是些什么鬼

1、javaBean javaBean是一种Java语言写成的可重用组件。为写成JavaBean,类必须是具体和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将...
  • alabadazi
  • alabadazi
  • 2015年11月27日 22:35
  • 2610

JavaBean, EntityBean, POJO, PO, BO,VO,DTO,DAO 区别

先记一部分 这个类是共有类(public),并且必须有一个公共的缺省构造函数。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。(JavaBean是一个定义了系...
  • ID_Rin
  • ID_Rin
  • 2017年01月07日 01:08
  • 895

J2EE学习笔记五:entity bean概念

    Entity Bean提供了一个关系数据库的面向对象的抽象,它能同时从面向对象技术和面向过程技术中获益。既然Entity Bean和Session Bean都是Enterprise Bean,...
  • CMTobby
  • CMTobby
  • 2007年11月28日 17:26
  • 2144

EntityBean关系

Entity Bean之间也可以进行继承。子类所创建的表自动拥有父类定义的一些字段。如果不想要该父类生成表,那就把它定义为abstract class。@Inheritance的strategy设为T...
  • xeseo
  • xeseo
  • 2013年07月25日 12:20
  • 668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JBuilder9+Weblogic7实战篇Entity Bean运用(三)
举报原因:
原因补充:

(最多只允许输入30个字)