分享
 
 
 

EJB3 实体组件在 J2SE 中的使用

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前言:

越来越多的企业将越来越多的业务转向自动化或半自动化平台,他们通过这个过程,进一步优化企业资源与治理方法,另一方面大大提升业务执行的效率与精确性。因此软件工程所需解决的实际问题,业务越来越复杂,规模越来越大,新旧系统配合使用的需求越来越多。软件工程技术和其它领域的生产力发展,就这样相互促进!

对系统进行合理分解,是软件工程(也是其它领域)降低系统复杂性的常用手段和唯一的基本方法,今天的企业级应用系统一般由如下部份组成:

用户交互模块,

基于行业规范的业务中间件,

基于软件工程技术规范的系统中间件,

软硬件基础平台组成。

以上其实是由上到下的 4 个层次,系统复杂度被分解到各层次的各个组件中。系统中间件就是其中对软件技术进行归纳的一个层次,该层次将一些常用的系统功能,从业务逻辑中剥离出来,并分门别类。本例即涉及系统中间件的使用。

对中间件而言,开发人员只需要熟悉它们的使用方法,然后运用 "拿来主义",直接拿来,合理使用即可,是相当不错的开发资源。今天 "拿来" 的是 EJB3 持久层规范的 Hibernate 实现版本。交互代码就是在主程序中对规范中的接口的调用,很简单的示例。

应该在这里提出"配置文件" 这一设计模式了 ---- 一定有人发笑:配置文件与设计模式何干?在系统维护过程中,当系统需要灵活变更组件或策略时,以配置文件代替硬编码来处理这种 "替换",大大减免了实现该逻辑的代码重新经历 "修改,编译,测试,发布" 等软件过程的机率 (配置文件中的内容需合理规划,否则将导致复杂性上升。 EJB 2.x 的部署描述文件就是最好佐证。 Log4J 配置文件则堪称典范)。 配置文件在组件装配方面更是功勋卓著。本文示例包含2个配置文件。

诸多赘述,只是希望能使入门级朋友有个思想预备:为何本文示例并非一段代码,而由这么多松散的部份组成。下面言归正传。

基础平台:

IBM T23 / PIII-M 1.13G/ 512M / 5400 rpm, 8M

Windows 2003

Postgresql 8.1.x

JDK 5.0 - update 4 ( 或 JRE 5.0 - update 4)

中间件:

Hibernate-EntityManager 3.1beta6 :

说明:这是 EJB3 持久层规范的 hibernate 实现。(若未集成 hibernate core, 必须另行获取。)

Postgresql 8.1.x JDBC Driver

说明: postgresql 客户端 JDBC 驱动程序。

以下可选内容源于 www.apache.org :

common-dbcp: JDBC 数据源连接池中间件( hibernate 缺省情况下采用C3P0),依靠于 :

common-collections

common-pool

说明: hibernate core 对 JDBC 连接池的使用处理得相当好,当代码在乎数据库连接的性能时, hibernate core 会根据配置文件 persistence.XML 中的相关配置,透明地配备连接池;若不需要该连接池,将配置文件中与相关的内容取消即可, hibernate core "自适用" 这种情形。

开发工具:

Eclipse 3.1.x 以上版本

Eclipse WTP

Hibernate Tools

Subclipse: subversion 的 eclipse 客户端插件 开发步骤:

导读:

本例的操作内容为:1,清除数据库中各表内容; 2,向数据库添加用户 hedan, 角色 friend, 并将新角色赋予新用户; 3,查询数据库中所有用户及其角色,并将之一一打印。这 3 个步骤分别对应 TestIt 类中的 removeAll, insert, query 三个方法。

下文中步骤 3、4 和 5 的内容是与 EJB3 – Persistence 规范相关的要点所在(请阅读这些小篇幅的源文件或配置文件中的说明),其它内容相对次要。

本文假设读者能熟练使用 Eclipse JDT 及 Hibernate Tools, 并熟悉 POSTGRESQL 的基本操作。

创建 Java project

将 JDBC 驱动程序及 Hibernate EntityManager 相关类库的 Jar 压缩包添加到 Project 的 Libraries 中

建数据库 , 标准 SQL 脚本如下( 持久层配置文件中所有数据库名称为 testdb, 数据库帐号/密码分别为 test/test,可按需修改 ):

CREATE TABLE _USER

(

USERID INT PRIMARY KEY,

USERNAME VARCHAR(64) NOT NULL DEFAULT '',

COMMENT VARCHAR(256)

);

CREATE TABLE _ROLE

(

ROLEID INT PRIMARY KEY,

ROLENAME VARCHAR(32),

COMMENT VARCHAR(128),

CONSTRAINT NQ_ROLE UNIQUE(ROLENAME)

);

CREATE TABLE _USERROLE

(

USERID INT,

ROLEID INT,

CONSTRAINT PK_USERROLE PRIMARY KEY(USERID, ROLEID),

CONSTRAINT FK_UR_USER FOREIGN KEY(USERID) REFERENCES _USER(USERID),

CONSTRAINT FK_UR_ROLE FOREIGN KEY(ROLEID) REFERENCES _ROLE(ROLEID)

);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有