知识大全 一个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的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 例子 p
知识大全 一个人因自身毛病失去信心,后又因一句话或一件小事成功的例子
一个人因自身毛病失去信心,后又因一句话或一件小事成功的例子美国总统罗斯福在他事业上升的时候得了小儿麻痹症下肢瘫痪但最后通过别人的开导和自己的调整又重新回到政界最后以唯一一个残疾人总统的身份成为美国总统
一个例子理解C#位移 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多人觉得位移这东西很复杂二
一个最简单的Socket通信例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 所谓socket
JAVA一个简单的两个线程例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 于Java好的方面
Struts有两种类型转化器 一种局部一种全局 如何实现 第一步定义转化器 第二部注册转化器 下面做一个局部类型转化器的实例 我们在上面一片日志说过有个变量date类型的只有我们输入格
关于那个SMTP类及一个例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!因为显示的原因发上来的帖
cha138/Article/program/Java/JSP/201311/20276
Java网络编程从入门到精通(32):一个非阻塞I/O的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看