注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 数据库 > Oracle 内容正文:EJB3 实体组件在 J2SE 中的使用

EJB3 实体组件在 J2SE 中的使用

发布时间:2006-04-11 12:49:45 来源:天极软件 网友评论 0 条
  前言:

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

  对系统进行合理分解,是软件工程(也是其它领域)降低系统复杂性的常用手段和唯一的基本方法,今天的企业级应用系统一般由如下部份组成:
    1. 用户交互模块,
    2. 基于行业规范的业务中间件,
    3. 基于软件工程技术规范的系统中间件,
    4. 软硬件基础平台组成。

  以上其实是由上到下的 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 的基本操作。
  1. 创建 java project

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

  3. 建数据库 , 标准 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)
    );

  4. 为 java project 添加 EJB3 实体类
    如 User.java , Role.java , Userrole.java , UserroleId.java 所示, 这几个源文件中包含了 EJB 3 annotations,阅读其中的标记需要参考规范。
    可以参照数据库中各表手动创建各类,最方便地办法是利用 CASE 工具,本例实体类由 Hibernate Tool beta 4 自动生成。

  5. 为 java project 创建主程序类 TestIt,本例的 "业务" 实现于其中 , 代码如附录 TestIt.java 所示。请阅读源代码行中的注释说明。

  6. 创建 EJB 3 持久层配置文件 META-INF/persistence.xml

  7. 创建 Log4j 配置 log4j.properties , 此时, 示例工程结构最后如下图所示 ( 前文中描述了示例工程必要的文件,下图中包含而前文中未提到的文件不是必须的 ) :


  8. 启动 TestIt 中的 main 方法,运行结果如下图中高亮部份所示

     

  结束语:

  若需完整的示例工程,请访问: svn://simsol.vicp.net/ejb3_persistence_hem , 在下使用的并发版本管理系统为 subversion ,而不是 cvs, 您可能需要从 http://subversion.tigris.org/ 去获取相关资源,为此可能给您带来稍许麻烦,在此表示歉意。

  文中不周之处,请多多指教!

相关文章
  • JMX+J2SE5.0实现Web应用的安全管理
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Web2.0年会:30亿美元有望砸向互联网
下一篇文章:WML语言的基本情况
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Atlas快速入门之实战Atlas
Atlas快速入门之实战Atlas
.net页面间的参数传递简单实例
.net页面间的参数传递简单实例
推荐阅讯
  • 冯杰:Web2.0时代,你能得到什么?
  • 探讨JDBC 4.0在设计和性能方面的改进
  • AVS对外开放解码器源代码 可免费下载
  • 用Ruby+Builder创建XML应用
  • Ajax并不神秘:揭下各种Ajax控件和类库的小
  • MySQL安全性指南(3)(转)
  • AJAX in Action
  • 实现基于 Ajax 的无限级菜单
  • 剖析AJAX成为“时尚”的十大主要理由
  • Spring中Rod Johnson 与“轮子理论”
阅读排行
  • 1..net页面间的参数传递简单实例
  • 2.VC++与Matlab混合编程之引擎操作详解
  • 3.Oracle数据库数据对象分析
  • 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
  • 5.Oracle数据库中索引的维护
  • 6.在Oracle的网络结构中解决连接问题
  • 7.Oracle数据安全面面观
  • 8.Oracle数据库的ORA-00257故障解决过程
  • 9.Oracle数据库备份与恢复的三种方法
  • 10.Oracle与SQL Server在企业应用中的比较
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载