知识大全 一个CMP的例子(一)

Posted 实体

篇首语:桃李不言,下自成蹊。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个CMP的例子(一)相关的知识,希望对你有一定的参考价值。

一个CMP的例子(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Container Managed Persistence Examples一个container managed的实体bean带给开发人员很多好处   首先 EJB容器管理所有数据库的存储与同步指令 其次容器管理实体bean之间的关系   由于这些服务的存在 你不用去编写数据库逻辑 你所要做的只是在配置描述里面描述这些信息 这样不仅可以节约时间而且使得bean可以在多种数据库服务器使用     这章我们的实例是一个container managed的实体bean 这个应用的名字叫RosterApp      RosterApp总揽   这个RosterApp应用程序维持在一些体育运动联盟的球员的名单以及球队的名单 这个应用程序有 个组件 RosterAppClient组件是一个客户端组件   他通过RosterEJB会话bean的romote接口访问RosterEJB   RosterEJB访问 个实体bean PlayerEJB TeamEJB and LeagueEJB 这些访问是通过 个实体bean的local接口     这些实体bean采用CMP方式 TeamEJB和PlayerEJB的关系是多对多的双向的 LeagueEJB和TeamEJB的关系也是双向的 但是是一对多的关系      编写PlayerEJB  这个实体bean代表一个存储在数据库的球员 像所有的CMP实体bean PlayEJB需要如下的代码    Entity bean class (PlayerBean)    Local home interface (LocalPlayerHome)    Local interface (LocalPlayer)      Entity bean class  为了实现CMP 这个实体bean的类必须是public和abstract的 同时也必须实现以下的条件    EntityBean interface   个或者多个ejbCreate和ejbPostCreate方法   get和set抽象方法    一些抽象的select方法   home方法   商业方法  这个bean不能实现的方法:   finder方法   finalize方法     Access方法  一个CMP实体bean有persistent和relationship 这些是虚拟的 所以你不用把他们定义为实例变量   你所作的只是在配置时描述他 但是你需要定义get和set方法 容器自动管理数据库的存储和同步   配置中这些persistent需要被容器维持    playerId (primary key)    name    position    salary   我们需要这些方法访问这些     public abstract String getPlayerId();  public abstract void setPlayerId(String id);    public abstract String getName();  public abstract void setName(String name);    public abstract String getPosition();  public abstract void setPosition(String position);    public abstract double getSalary();  public abstract void setSalary(double salary);    这些方法的名字以get或者set开头 后面跟着persistent的名字     这和JeanBean是一样的     同时我们需要Access方法访问Relationship在这个应用程序中 因为一个球员可以在多个球队效力 所以一个PlayerEJB对象可以和很多TeamEJB相关 我们定义这个Relationship名字为teams 接下来我们需要定义这些Access方法     public abstract Collection getTeams();  public abstract void setTeams(Collection teams);     Select方法  一个Select方法和一个Finder方法类似    一个Select可以放回一个local或者remote接口(或者一个集合)   一个Select需要一个query连接数据库   需要自己在配置中定义一个EJB QL   bean类不需要实现这个方法  但是 者也有不同的地方    一个select方法可以返回相关联的bean一个persistent(或者集合) 一个finder只能返回local或者remote接口    由于select方法不在local或者remote接口 一个select方法不能直接被客户调用 只能被这个bean的内部方法调用   通常被一个商业方法调用 这个程序中定义了如下的select方法     public abstract Collection ejbSelectLeagues(LocalPlayer player)    throws FinderException;  public abstract Collection ejbSelectSports(LocalPlayer player)    throws FinderException;    select方法名必须满足    前缀必须是ejbSelect   access控制访问是public的   abstract   抛出的exception必须包含javax ejb FinderException    商业方法由于select方法不能被客户直接调通 所以将他们包含在商业方法中     public Collection getLeagues() throws FinderException     LocalPlayer player = (team LocalPlayer)context getEJBLocalObject();    return ejbSelectLeagues(player);      public Collection getSports() throws FinderException     LocalPlayer player = (team LocalPlayer)context getEJBLocalObject();    return ejbSelectSports(player);        实体bean方法  由于是CMP 所以bean的生命周期方法基本不用实现  ejbCreate方法:     public String ejbCreate (String id String name String position double salary) throws CreateException     setPlayerId(id);    setName(name);    setPosition(position);    setSalary(salary);    return null;       注意return null除非debug的需要 ejbRemove方法一般都是空的 当容器调用这个方法后 容器删除数据库中的纪录     ejbPostCreate方法和ejbCreate方法的参数和返回类型一样 如果你想建立一个关系 你应该把代码写在ejbPostCreate方法中   容器会自动管理同步 存储等数据库操作 这些通过ejbLoad和ejbStore方法完成     local home interface:  这里定义了creat finder和其他一些home方法     package team;    import java util *;  import javax ejb *;    public interface LocalPlayerHome extends EJBLocalHome         public LocalPlayer create (String id String name String position double salary)      throws CreateException;        public LocalPlayer findByPrimaryKey (String id)      throws FinderException;        public Collection findByPosition(String position)       throws FinderException;         public Collection findByLeague(LocalLeague league)       throws FinderException;            loca interface:  这里定义了一些商业方法 这些方法有bean实现 同时也定义了get和set方法 set方法不应该被暴露出来     package team;    import java util *;  import javax ejb *;    public interface LocalPlayer extends EJBLocalObject       public String getPlayerId();    public String getName();    public String getPosition();    public double getSalary();    public Collection getTeams();      public Collection getLeagues() throws FinderException;    public Collection getSports() throws FinderException;   cha138/Article/program/Java/JSP/201311/19402

相关参考

知识大全 生活中有许多骗局,请举一个例子,并分析他们为什么会这么欺骗

生活中有许多骗局,请举一个例子,并分析他们为什么会这么欺骗骗术1:偷梁换柱案例一:丁先生刚才在中华门内的公交站牌等车时,过来一名少年,不时和他套近乎,“他走过来和我打招呼,讲了几句话,接着便掏出了一部

知识大全 一个JAVA连接ORACLE的例子

一个JAVA连接ORACLE的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  例子    p

知识大全 一个人因自身毛病失去信心,后又因一句话或一件小事成功的例子

一个人因自身毛病失去信心,后又因一句话或一件小事成功的例子美国总统罗斯福在他事业上升的时候得了小儿麻痹症下肢瘫痪但最后通过别人的开导和自己的调整又重新回到政界最后以唯一一个残疾人总统的身份成为美国总统

知识大全 一个例子理解C#位移

一个例子理解C#位移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多人觉得位移这东西很复杂二

知识大全 一个最简单的Socket通信例子

一个最简单的Socket通信例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  所谓socket

知识大全 JAVA一个简单的两个线程例子

JAVA一个简单的两个线程例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  于Java好的方面

知识大全 struts2类型转化器详解(带例子)

  Struts有两种类型转化器  一种局部一种全局  如何实现  第一步定义转化器  第二部注册转化器  下面做一个局部类型转化器的实例  我们在上面一片日志说过有个变量date类型的只有我们输入格

知识大全 关于那个SMTP类及一个例子

关于那个SMTP类及一个例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!因为显示的原因发上来的帖

知识大全 一个图形计数器的例子

cha138/Article/program/Java/JSP/201311/20276

知识大全 一个非阻塞I/O的例子

Java网络编程从入门到精通(32):一个非阻塞I/O的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看