没有合适的资源?快使用搜索试试~ 我知道了~
是一个EJB的学校管理系统的开发实例
资源详情
资源评论
资源推荐
EJB系统开发实战录(1)
作者
:
利瓦伊
,
庄永璋
前一阵子和朋友一起参与了一个实际的
EJB(Enterprise JavaBean)
应用
系统开发,在其中学习到了许多有用的技术和经验。虽然目前的市面上已经有许
多讨论
EJB
技术的书籍和文章,但是似乎尚未有以实际案例做为讨论内容。鉴
于目前许多公司和系统都开始采用
Java
和
EJB
的技术,因此笔者在此野人献
曝,希望以一个简化的范例来说明在开发
EJB
应用系统时会遭遇到的技术问题
以及一些设计上的取舍。当然对于
J2EE
有兴趣的读者也可以依据文章讨论的内
容跟随作者一起开发这个范例
EJB
系统。
简化的范例系统
我们将以一个在线
Seminar
注册系统来说明如何使用
EJB
来设计和完成,
虽然在线注册系统是否需要使用
EJB
来实作是值得讨论的,但是我们讨论的重
点是在于如何藉由
EJB
的技术来设计和实作此系统,读者当然可以我们讨论的
内容把这些技术使用在更实际的应用之中。
假设现在有一个『
EJB
学习论坛』开了一系列的
EJB
课程,使用者可以浏
览目前的课程,也可以注册想要参加的
EJB
课程。而论坛中的讲师除了像使用
者一样浏览课程之外,最重要的便是开办课程以及移除课程。此外学习论坛中有
系统管理者,他的工作主要是管理注册的学员,在可供使用的教室中排讲师开办
的课程,以及确认课程将如期开始。
在一开始我们先不考虑安全方面的问题,因为在后续的文章中我们将介绍如
何使用
EJB
的安全服务
(Security Service)
,并且如何结合
Design Pattern
来
克服许多实作的困难。
范例系统的
Use Case
从刚才的讨论中,我们可以很容易的使用
Use Case
来描述此范例应用系统。
在这个范例系统中很明显的有三个
Actor
在不同的应用中互动。这三个
Actor
分别是用户,讲师以及系统管理者。这三个
Actor
自各藉由使用范例系统中不同
的功能来完成他们的工作,例如用户
Actor
使用了系统中浏览课程以及注册课程
的功能,而系统管理者
Actor
则是负责管理注册的学员,编排课程以及确认课程。
讲师则是主导课程的
Actor
,他可以浏览,开办以及移除课程
(
当然,必须是这个
讲师自己的课程
)
。
图
1
范例系统的
Use Case
雏型图
上图是此范例系统的
Use Case
雏型图,从图中我们除了可以清楚的看到每
一个
Actor
使用的功能之外,也可以发现有许多的功能是重复的被不同的
Actor
使用的,例如浏览课程等。
有了
Use Case
图之后,仔细的观察其中的功能,我们可以发现除了
Actor
以及范例系统的功能之外,我们也可以很快的找到其中数个相关的
Domain
Entity
。例如三个
Actor
就是
Domain
之中的
Entity
,而课程本身,以及上课
的房间等都是。
Domain Entity Analysis
在进行
Domain Entity
分析时,我们希望找到范例系统之中重要的实体
(
Entity
),实体可能包含的属性,以及实体之间的关系。之所以要进行实体分
析是因为实体是
EJB
中
Entity Bean
最好的候选人,实体之间的关系也是
EJB
Relationship
的好对象,此外藉由实体分析我们也可以发现实体之间的企业规
则。
图
2
便是从图
1Use Case
中分析而得的
Domain Entity
架构图,在图中
[
除
了代表范例系统中不同的实体之外,每一个实体可能包含的属性也都呈现在图
中,这些实体属性便是对映到
Entity Bean
时可能的字段数据。另外在图中也
显示了实体之间的关系,这些关系有一些是自然拥有的关系,例如一个课程在特
定的时间是由一个讲师所讲授,而一个讲师则可以讲授
0
到多个课程。一个有趣
的企业规则是在图
2
中我们规定了一个课程至少要有
5
个注册的学员才能够开
课。
图
2
范例系统的
Domain Entity
分析图
实作模型分析
-Entity Bean
分析
Domain Entity
本身就是很好的
Entity Bean
的候选人,从图
2
的
Domain
Entity
分析中我们可以直接把
Entity
的各属性对映成
Entity Bean
的属性字
段。此外为了符合
EJB
中
findByPrimaryKey
的要求,因此在图
3
的
Entity
Bean
中为每一个
Bean
加入了
PrimaryKey(<<PK>>)
属性字段。至于图
2
中的
实体关系则使用了
Collection
来实作。例如图
3
的
Seminar Bean
使用了
型
态为
Collection
的
Attendees
字段来维护参加此课程的学员,同样的
Attendee
Bean
也使用了型态为
Collection
的
Seminars
来维护学员所有参加的课程。
图
3
范例系统的
Entity Bean
分析图
范例系统到这一步为止已经分析和发现了
Domain Entity
以及
Actor
之间
的互动,而且我们可以很轻易把
Domain Entity
对映到
EJB
的
Entity Bean
并且进行
Entity Bean
之间关系的分析。不过仔细的读者应该也会发现到目前
为止我们还没有试着解决如何设计真正实作此范例系统的企业逻辑程序代码。这
个意思就是说例如现在我们想要实作图
1
中排课程的功能,那么要如何设计以及
利用图
3
中的
Entity Bean
呢?这个部份就属于
Session Bean
以及
Design
Pattern
的设计了,在稍后我们会继续讨论,在此之前我们还需要先讨论和
Entity Bean
息息相关的数据纲要分析。
实作模型分析
-
数据库纲要分析
Entity Bean
代表的是后端数据库中某一个数据表
(Table)
或是
View
的数
据,因此有了
Entity Bean
的设计架构之后,要对映到数据库纲要就非常的简
单了。在简单的场合中,
Entity Bean
的架构可以直接对映成一个数据表,只是
Entity Bean
中的
Relationships
可以使用数据库的
Primary Key
以及
Foreign
Key
来取代。
下图就是图
3Entity Bean
分析图对映的数据库纲要设计,比较图
3
和图
4
我们可以发现一些
Entity Bean
是直接对映成资料表的,例如
Administrator
。
至于比较复杂的
Seminar
这个
Entity Bean
就需要比较费心来设计了。例如图
3
的
Seminar
中拥有连结到
Room Bean
的属性,在对映到数据表时,
Seminar
则是以
Foreign Key
指到
Room
数据表中的记录。而
Seminar
和
Attendee
复
杂的的关系在图
4
中则使用了另外一个数据表
Appointment
,藉由
Primary
Key
和
Foreign Key
来储存两个数据表之间指定的关系,这样的设计是为了兼
顾数据库正规化的要求。
图
4
范例系统的数据库纲要
有了数据库纲要分析之后,我们就可以使用数据库提供的工具来建立数据库
以及之中的数据表。不过现在许多先进的
EJB
开发工具,例如
JBuilder
,却可
以自动的根据
Entity Bean
规范产生相对应的数据表,这在稍后实作的步骤中
会展示如何做到。
基本上在这里产生了一个非常有趣的讨论,那就是在
开发
EJB
系统时到底是从
EJB
组件开始设计再对映到数
据库纲要或是从传统的数据库纲要设计再产生
Entity
Bean
规范?如果询问不同技术背景的技术人员可能会有
不同的答案,在本期的文章中似乎是从
Entity Bean
再到
数据库纲要。不过在实际的案例中不一定是如此做的,在
以后的文章中我们会陆续讨论许多有关实务设计的问题。
Design Pattern
的考虑
开发
EJB
系统时,使用
Design Pattern
几乎是程序员必备的技术,因为
EJB
是执行在中介的
EJB Server
之中,因此如何减少客户端网络的存取次数
剩余20页未读,继续阅读
zyy_13579
- 粉丝: 4
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0