基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf_第1页
基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf_第2页
基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf_第3页
基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf_第4页
基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

基于mvc模式的12EE应用研究与开发论文(pdf 55页).pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士研究生毕业论文基于mv c模式的1 2 E E应用研究与开发 摘要 随着我国电子政务的推进 社区作为政府与群众联系的桥梁和纽带是社会的 重要组成部分 它的信息化程度直接影响到政府对社区的管理和居民的生活水 平 但目前大多数社区使用的还是早期的Wi n d o w s 操作系统下的单机版信息管 理系统 使用不同的后台数据库 普遍存在着可移植性差 工作效率低 可扩展 性差 可维护性差 部署麻烦等缺点 因此 迫切需要对这些原有系统进行有效 的改进和整合 建立一套较完善的社区信息管理系统 克服原有系统存在的种种 弊端 近年来 随着网络技术的迅速发展和J 2 E E 平台的广泛采用 基于B S 的多 层We b 体系结构逐渐发展成熟起来 MV C设计模式分离了数据的控制和数据的 表现 在实现多层W e b 应用系统中具有明显的 优势 S t r u t s 是一个基于m v c设 计模式的开源框架 而 H i b e rn a t e 是目前流行的对象映射工具 本文首先从软件系统体系结构入手 讨论了B S 多层体系结构 m v c模式 J 2 E E 等相关概念和技术 然后 给出了一个基于mv c模式应用S t r u t s 和H i b e rna t e 的J 2 E E应用的社区信息管理系统解决方案 最后 针对社区信息管理系统中异 构数据库集成的问题 提出了利用H i b e rn a t e 数据访问技术来实现不同物理位置 的数据的透明访问 关键词 J 2 E E M V C S t r u t s H i b e r n a t e异构数据库 社区信息管理系统 硕士研究生毕业论文基于M v C模式的J 2 E E 应用研究与开发 Ab s t r a c t Wi t h t h e d e v e l o p m e n t o f E G o v e r n m e n t th e c o m m u n i ty w h i c h c o n n e c t s t h e g o v e r n m e n t a n d t h e p e o p l e h as b e c o m e a n i m p o rt a n t p a rt o f t h e s o c i e ty T h e e x t e n s i o n o f E C o m m u n i t y a ff e c t s t h e l e v e l o f c o m m u n i ty m a n a g e m e n t a n d t h e l i f e o f r e s i d e n t s A n d n o w m o s t c o m m u n i ty s t i l l u s e f o r m e r s y s t e m s w o r k e d o n Wi n d o w s w h i c h l a c k o f t r a n s p l a n t a b i l i t y e x p a n s i b i l i ty m a i n t a i n a b i l i ty a n d s o o n C o n s e q u e n t l y w e n e e d t o b u i l d a n e w m a n a g e m e n t s y s t e m o f c o m m u n i t y b a s e d o n t h e f o r m e r s y s t e m s I n r e c e n t y e a r s w i t h t h e r a p i d d e v e l o p m e n t o f n e t w o r k a n d e x t e n s i v e a d o p t i o n o f J 2 E E p l a t f o r m m u l t i l a y e r We b s t r u c t u r e b a s e d o n B S g r o w s u p g r a d u a l l y M V C d e s i g n p a tt e rn s e p a r a t e s c o n t r o l o f d a t a fr o m r e p r e s e n t a t i o n o f d a t a a n d t h e r e f o r e h as t h e a d v a n t a g e o f i m p l e m e n t a t i o n o f m u l t i l a y e r We b a p p l i c a t i o n s S t r u t s i s t h e a p p l i c a t i o n fr a m e w o r k w h i c h im p l e m e n t s MV C b as e d o n J 2 E E p l a t f o r m a n d H i b e rn a t e i s o n e o f t h e m o s t p o p u l a r O R O b j e c t R e l a t i o n M a p p i n g t o o l T h i s p a p e r f i r s t l y p re s e n t e d a n d d i s c u s s e d s o m e t e c h n o l o g y a n d c o n c e p t s r e l a t e d t o o u r s u b j e c t t h e n p u t f o r w a r d a s o l u t i o n o f t h e m a n a g e m e n t s y s t e m o n c o m m u n i ty i n f o r m a t i o n u s e d S t r u t s a n H i b e rn a t e a B S m u l t i t i e re d J 2 E E W e b A p p l i c a t i o n b as e d o n MV C f i n a l l y g i v e s a s o lu t i o n o f i n t e g r a t i o n o f h e t e r o g e n e o u s d a t a b as e s in t h e Ma n a g e m e n t S y s t e m o f C o m m u n i t y b ase d o n H i b e rna t e Wr i t t e n b y Y a o L e i l e i C o m p u t e r S o f t w a r e a n d T h e o r y D i r e c t e d b y P rof C h e n L i a n K e y w o r d s J 2 E E M V C S t r u t s H i b e r n a t e H e t e ro g e n e o u s D a t a b a s e s Ma n a g e me n t S y s t e m o f C o mmu n i t y 1 1 Y 9 2 8 7 5 6 独创性声明 本人声明 所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果 据我所知 除了文中特别加以标注和致谢的地方外 论文中不包含其 他 人己 经发 表 或 撰写 过的 研究成 果 也不 包 含为 获得 互 鱼鑫生 或 其他 教 育 机 构的 学位或证书而使用过的材料 与我一同工作的同志对本研究所做的任何贡献 均己 在论文中 作了明确的说明并表示谢意 学 位 论 文 储签 名 孤 碟碟签 字 日 期 m o b 年 月 2 0 日 学位论文版权使用授权书 本 学 位论 文作 者 完全了 解 鱼鱼A壑 有 关保留 使 用学 位论 文的 规 定 有权保留并向国 家有关部门或机构送交论文的复印件和磁盘 允许论文被查阅和 借阅 本 人授 权南昌大李可以 将学 位 论文 的 全部 或部分内 容 编入 有关 数 据库 进 行检索 可以 采用影印 缩印或扫描等复制手段保存 汇编学位论文 保密的学位论文在解密后适用本授权书 学 位 论 文 作 者 签 名 冰 碟 A 签 字 日 期 mo b 年S月z o 日 导 师 rk t itl l 签 字 日 期 2 A O b 年S月2 10日 硕士研究生毕业论文 基于M V C模式的J 2 E E应用研究与开发 食 禽 月z e r己百侣 旨 二气 7 电 月牛J R 1 1 课题来源及意义 1 1 1 课题背景 在全球信息化浪潮的推动下 人类社会己 经逐步步入信息时代 信息基础设 施建设和I n t e r n e t 技术的日 渐完善 使得基于这一技术的应用以惊人的速度向 社会生活各方面渗透 特别是随着全国电子政务的推进 社区信息化建设已成为 当今社区建设的一种趋势 是电子政务建设不可或缺的基础和重要组成部分 然 而当前社区管理大多使用的是Wi n d o w s 操作系统下的单机版的软件 而且各系 统使用的后台数据库几乎都不相同 这就给使用者带来了诸多不便 1 第一 数据共享问题 因为原有系统大多是单机版 而且其后台使用的数据 库大都不同 所以即便是有了局域网的建设 系统之间也不能做到有效的数据交 换和共享 例如 一个社区往往是无法查询到另一个社区的信息 而且 如果某 次要使用的数据涉及到多个系统 还必须考虑到数据交换格式的问题等等 第二 重复建设问题 因为每个系统各自为政 这势必造成不同程度的数据 冗余和重复建设的问题 从而也就可能出现资金浪费和各系统之间的数据异构现 象 给数据库维护带来了很多问题 第三 管理混乱 缺乏综合统筹管理 各个系统互相不联接 影响未来决策 的数据依托 第四 安全性差 很容易造成重要数据的流失 第五 与相关单位的交流非常困难 需要大量时间 严重影响工作效率 第六 系统扩展性差 由于没有统一的系统建设规划 导致新旧系统不能有 效联接等等 综上所述 为了提高社区工作人员的工作效率和系统的利用率 加快社区信 息化进程 就必须对这些原有系统进行有效的改进和整合 建立一套完善的社区 信息管理系统 来克服原有系统存在的种种弊端 硕士研究生毕业论文基于mv C模式的J 2 E E 应用研究与开发 1 1 2 技术背景 随着软件规模和复杂度的日 渐升级 人们越来越深刻地认识到 良 好的软件 体系结构对保证系统的成功至关重要 早先的大型机和哑终端构成的集中式的计 算模式和网络技术的推动下发展到以C S 结构为代表的两层模式 C S 结构的客 户端庞大 服务器端容易成为瓶颈等缺点促使多层 N t i e r 分布式结构的出 现 如今 网络已融入人们的生活 各种We b 应用系统也应运而生 但随着用 户需求的不断变化和市场竞争的日 益激烈 这些W e b 应用系统必须不断地改进 其内 容和形式 而解决该问题的关键是选择正确的软件系统体系结构 W e b 应用 系统多采用基于B S的三层或多层框架结构 就W e b 应用系统整体而言 大多 采 用 表示 层 业 务 层 数 据层 三层 或多 层体 系结 构 M V C M o d e l V i e w C o n t r o ll e r 模式 1 2 5 正是将系统 划分为模型层 视图 层 控制 层 因 此 M V C模式适应了日 益复杂的We b 应用系统的设计需求 采用mv C模式构建We b 应用系统的体系 结构 能够有效地解决在We b 应用系统开发过程中由于系统结构的复杂程度较 高 而带 来的诸多关 键性问 题 2 1 如代码 之间的 祸 合问 题 代 码的易维护性问 题 组件的可重用性问题 不同技能的开发人员如何分工的问题等等 J 2 E E是一种利用J a v a 2 平台来简化企业解决方案的开发 部署和管理相关 问题的体系结构 提供了一个企业级的计算模型和运行环境 用于开发和部署多 层体系的应用 J 2 E E提供的多层分布式应用模型 组件重用 一致化的安全模 型以及灵活的事件控制 加快了应用程序的设计和开发 可以容易 快速地建立 融合I n t e rn e t 技术尤其是W e b 技术的N层 N T i e r s 结构的分布式企业应用 基于 J 2 E E 技术的B S 结构具有可维护性好 可扩展性好 安全性好等优点 较好地 解决了C S结构所固有的可维护性差 可扩展性差 安全性差 部署麻烦等弊端 3 最近几年 mv C模式被引入到S U N公司的J 2 E E平台 基于mv C模式的 J 2 E E 应用开发 在实际应用中 受到越来越多的欢迎 m v C模式利用控制器来 分离模型和视图 达到层间松散祸合的效果 从而提高了系统的灵活性 复用性 和可维护性 S t r u t s 就是一个基于mv C 模式的W e b 应用程序的 框架 它是A p a c h e S o ft w a r e F u n d a t i o n的一个开源项目 S t r u t s 提供了C o n t r o l l e r 组件并且整合了其它技术来 硕士研究生毕业论文基于r a v C模式的J 2 E E应用研究与开发 实现M o d e l 和V i e w H ib e rn a t e 是另一个开源框架 它是一种实现对象和关系之 间映射 O R M O b j e c t R e l a t i o n M a p p i n g 的 框架 它对J D B C进行了 轻量级的对象 封装 使得J a v a 程序员可以 使用面向对象编程思维来操作关系数据库 综上所述 本文提出了一个基于M V C 模式应用S t r u t s 和H i b e rn a t e 技术的 J 2 E E 架构来实现社区信息管理系统的解决方案 1 2 研究内容 首先 主要是讨论分析了J 2 E E 和M V C 模式 S U N公司的J 2 E E J a v a 2 平台 企 业版 是一个基于J a v a 的 适合服务 器端构 件体系结构的 完整的 企业级 应用 开发平台 J 2 E E 技术主要有 E J B S e r v le t s J S P J D B C J N D I 等 J 2 E E 平台的应 用程序主要由构件组成 应用程序的逻辑被封装到实现各种功能的一些构件中 这些构件具有固定的格式并遵循J 2 E E规范 应用系统的开发就是设计这些构件 并组装成整个应用 而 W C M o d e l V i e w C o n t r o l l e r 模式正是将系统划分为模 型层 视图层 控制层 采用M V C模式构建W e b 应用系统的体系结构 能够有 效地解决在W e b 应用系统开发过程中由于系统结构的复杂程度较高而带来的诸 多 关 键性问 题 2 1 如代码之间的 祸合问 题 代码的易维护性问 题 组件的 可重 用 性问题 不同技能的开发人员如何分工的问题等等 其次 介绍了S t r u t s 和H i b e rn a t e 技术 以及如何运用这两种技术构建一个 基于MV C模式的J 2 E E架构 并详细介绍了基于该架构的社区信息管理系统的 设计和实现 最后 本文通过对课题所涉及的相关概念和技术进行分析研究之后 针对目 前社区信息管理中普遍存在的各子系统数据库异构的问题 提出了基于对业务数 据进行主题域的划分 采用H i b e rn a t e 数据访问 技术实现对异构数据库的集成 消除了数据集成中对物理数据结构的依赖 1 3 本文结构 第 1 章 引言部分 陈述了本文的背景及意义 简单地介绍了一些与本文相 关的概念和技术 给出了本文的主要研究内容 第2 章 首先介绍了基于B S的We b 应用体系结构的发展 然后介绍了J 2 E E 硕士研究生毕业论文基于MV C模式的J 2 E E应用研究与开发 体系结构以及MV C模式在We b 应用体系结构中的应用 第3 章 详细介绍了S t r u t s 框架的主要技术及其工作原理 第4 章 对OR M a p p in g 对象关系映射 框架 H i b e rn a t e 的体系结构及工 作流程进行详细介绍 第5 章 给出了基于MV C模式应用 S t r u t s 和H i b e rn a t e 技术的J 2 E E应用一 社区信息管理系统的解决方案 在此基础上 应用前面几章介绍的相关技术 对 社区信息管理系统的开发进行了介绍 包括系统设计 实现等内容 第6 章 介绍了利用H i b e rna t e 数据访问技术解决社区信息管理系统中数据 库异构的问题 第7 章 总结本文并说明以后的进一步工作 硕士研究生毕业论文基于m v C模式的J 2 E E 应用研究与开发 第3 章S t r u t s 框架 S t r u t s 的体系结构 J a k a r ta是 A p a c h e S o ft w a r e的一个研究开发 J a v a产品的工程 主要为 开 发者提供各种开 发工具及软件框架t 1 6 1 S t r u t s 是 J a k a r t a 工程提供的 用于 W e b 应用软件的框架 他采用了MV C模型 2 它的创建者希望改进和提高 lla发 3 Jav形 S e r v l e t J S P 标签库 以 及面向 对象的技术水平 S t r u t s 这个名字来源于在建 筑和旧式飞机上使用的支持金属框架 它的目的是使运用 MV C模式开发 We b 应用的时间减少 在利用 J S P S e r v l e t的优点建立可扩展的 J 2 E E W e b应用时 S t r u t s是个不错的选择 S t r u t s是一个 We b F r a m e w o r k 它继承了 MV C的各项 特性 并根据 J 2 E E的特点 做了相应的变化和扩展 它通过把一组相互协作 的类S e r v l e t 以及标签库结合在一个统一的框架中 将 MV C模式所具有的 分 离业务逻辑和显示逻辑 的能力发挥到了极点 完全实现了 M o d e 1 2 并很好的 帮助 J a v a开发人员开发 J 2 E E W e b 层 S t r u t s实质上就是在 Mo d e l 2的基础上实现的一个 MV C架构 它只有一 个中心控制器 它采用 X M L定制转向 使用 A c t i o n来处理逻辑 S t r u t s由 S e r v le t 标记库 实用类库等构成 它提供了自己的控制器 同时整合了其它的 一些技术去实现 Mo d e l 层和 V i e w层 它的体系结构如图3 1 所示 图3 1 S t ru t s 体系结构图 从图中看到 S t r u t s的三个部分 硕士研究生毕业论文基于mv C模式的J 2 E E应用研究与开发 1 视图 视图主要是由 J S P建立 S t r u t s自身包含一组标记库 是 S t r u t s 的精华之 1 9 它们可以 简 化 J S P页面的 代码 灵活运用它们可以大大提高 他们的 开发 效率 2 模型 S t r u t s中的模型由一系列的 b e a n来实现 可以自己定义业务逻辑 b e a n S t r u t s本身还提供了一种非常有用的 b e a n 即 F o r c n B e a n 它可以 在模型和视图 之间保存数据 3 控制器 S t r u t s中的控制器主要是它自 身提供的 A c t i o n S e r v l e t 而 A c t i o n S e r v l e t的 核心就是 s t r u t s c o n f i g x m l 配置文件 它包含了所有页面导航的定义 A c t i o n S e r v l e t 接受请求 并根据配置文件中的定义将控制转移到适当的 A c t i o n 类 其余的控制逻辑和对模型的访问由 A c t i o n类来完成 3 2 详细论述 S t r u t s的主要类 S t r u t s框架中相互协作的类 主要包括 A c t i o n S e r v l e t A c t i o n A c t i o n F o r m A c t i o n M a p p i n g 它们的 调用关系如图3 2 所示 图3 2 S t r u t s 类间的调用关系 这些类的概念如下 A c t i o n S e r v l e t 它充当了控制器 它根据 H T T P请求信息调用类 A c t i o n 并根据其执行结果选择调用的 J S P文件 A c t i o n 它是模型中完成逻辑 b e a n的功能的类 完成数据的处理 A c t i o n F o r m 它是模型中完成数据 b e a n的功能的类 它保存从 H T T P请 求中取得的数据 并包含数据的设定和取得等操作 硕士研究生毕业论文基于M V C模式的J 2 E E 应用研究与开发 A c t i o n M a p p i n g 它包含有关 特定事件如何被映射到特定 A c t i o n类的 信息 正因为这些类的相互协作 才构成了 S t r u t s框架 S t r u t s中各个类的作用归纳如下 D A c t i o n S e r v l e t 类 它是 S t r u t s的命令部分 是框架的核心 A c t i o n S e r v l e t 创建并使用 A c t i o n A c t i o n F o r m A c t i o n F o r w a r d S t r u t s的控制器通过 s t ru t s c o n f ig x m l 文 件配 置 A c t i o n S e r v le t 将事 件映 射到 类的 一 个 s e r v le t 在创 建 We b项目时 程序员将扩展 A c t i o n 和 A c t i o n F o r m 来解决特定的问题 配 置文件 s t r u t s c o n fi g x m l 告诉我们 A c t i o n S e r v l e t 如何使用这些扩展的 类 A c t i o n F o r m类 它维护W e b 应用程序的会话状态 A c t i o n F o r m是一个抽 象类 必须为每个表单输入模型创建该类的子类 输入表单中的数据能够直接从 请求流中提取出来 并转移到 A c t i o n F o r m 类中 这样就省去了很多繁杂的 re q u e s t g e t P a r a m e t e r O 调用 A c t i o n类 它是业务逻辑的一个包装 但是 A c t i o n类要求控制应用程序 的流程 而不应该控制应用程序的逻辑 尽量将业务逻辑放在单独的包中或放在 b e a n中 这样可以提供更大的灵活性和可复用性 A c t i o n M a p p i n g类 它包含有关特定事件如何被映射到特定A c t i o n类的 信息 输入事件通常在 H T T P请求表单中发生的 S e r v l e t 容器将 H T T P请求转 换为 H tt p S e r v le t R e q u e s t 控制器查看输入事件 并将请求分派给某个 A c t i o n类 S tr u t s c o n f ig x m l 确定 控 制器 调用 哪个 A c t i o n类 S t r u t s c o n f ig x m l 中 的 配置 信 息就转换成一组 A c t i o n M a p p in g 将其放入 A c t i o n M a p p i n g s容器中 A c t i o n S e r v l e t 通 过 p e r f o r m 方法将 A c t i o n M a p p in g传递给 A c t i o n类 这样就 使 A c t i o n可访问 用于控制流程的信息 3 3 控制器的运作 S t r u t s中有一个重要的配置文件 叫 s t r u t s c o n f i g x m l 主要用来保存 a c t i o n 的匹配信息 下面详细论述了 S t r u t s的动作流程和各组件之间的关系 A c t i o n S e r v l e t 类中的 S e r v l e t 是 S t r u t s框架的核心 实际使用的S e r v l e t 在 配 置 文 件 述 进行定义 s t r u t s c o n fi g x m l 中 由一 组 映 射 由A c t i o n M a p p in g 类描 每个映射定义了 A c t i o n类的路径和完全限定名 A c t i o n S e r v l e t 创 硕士研究生毕业论文基于M V C模式的J 2 E E 应用研究与开发 建和使用 A c t i o n A c t io n F o r m A c t i o n F o r w a r d 在创建 W e b应用时 采用扩展 A c t i o n和 A c t i o n F o r m来解决如何响应用户请求的问 题 A c t i o n S e r v l e t 通 过 s t r u t s c o n f i g x n il知道如何使用扩展类 也可以扩展 A c t i o n S e r v l e t 从而使 S t r u t s应用带有一些自 定义的特性 当控制器组件接收到 一个来自 用户的 H T f P请求时 通常是一个 后缀为 d o的请求 就开始查找 针对这个请求的动作映射 再检查是否曾 经创建过相应的动作对象 A c t i o n实 例 如果没有 则调用 A c t i o n M a p p i n g生成一个动作对象 控制组件会保存这 个动作对象供以后使用 接着调用 A c t i o n M a p p i n g的方法得到 A c t i o n F o r m对 象 然 后把这个 A c t i o n F o r m对象当 作参数传递给动作对象的p e r f o r m o 方法 这个方法结束后会返回给控制组件一个A c t i o n F o r w a r d对象 控制组件从这个对 象中获取下一个视图的路径或重定 向属性 如果为重定向属性 则调用 H tt p S e r v le t R e s p o n s e的 方 法 显示 下 一 视 图 否 则 相 继 调 用 R e q u e s t D i s p a tc h e r S e r v le t C o n t e x t 续 传 H T f P请 求到 下一 个视图 当 动作 对 象 运行 p e r f o r m 方法时 可能出 现错误信息 动作对象可以 保存这些错误信息到 一个 A c t i o n E r r o r 对象中 再调用自身的 s a v e E r r o r s o 方法把这个错误保存到 R e q u e s t 对象的 属性中 接着动作对象调用 A c t i o n M a p p in g对象的 g e t l n p u t o 方 法从动作映射中获取 i n p u t 参数 也就是产生输入的视图 并以 这个i n p u t 为参 数生成一个 A c t i o n F o r w a r d对象返回 这个 i n p u t 参数的 J S P中一般由 h t t p e r r o r s定制标签读取这些错误信息并显示在页面上 S t ru t s的 组件相互协作 完成了整个框架的运作 硕士研究生毕业论文基于 mv C模式的J 2 E E应用研究与开发 第4 章H i b e r n a t e 技术的原理 4 1 起源 面向 对象作为接近真实客观世界的开发概念 使程序代码更易读 设计更合 理 在普遍存在的数据库应用领域 开发人员对面向对象的追求从未停止过 从八十年代开始 就有很多公司和研究机构在进行着面向 对象与数据库结合 的研究 数据库的对象化一般有两个方向 一个是在主流的关系数据库的基础上 加入对象化特征 使之提供面向 对象的服务 但访问 语言还是基于 S Q L 另一 个方向就是彻底抛弃关系数据库 用面向对象的思想来设计数据库 即 O D B M S 对象数据库管理系统 o 但是O D B MS的研究和广泛推广还有待时日 目 前关系数据库还在雄霸天 下 因此很多应用还是采用简单的J D B C来访问数据库 可是J D B C也有很多局 限性 比如调用复杂 容易产生资源泄漏等等 与面向对象的J a v a 语言有一段 距离 所以很多开发小组开始思考如何将应用中的数据进行对象化建模 然后再 想办法与J D B C结合起来 这就是J a v a 数据库开发中的不断推陈出新的对象包 装技术 2 0 1 要将现有的 J a v a对象持久保存到关系数据库 就使用对象 关系映射 O b j e c t R e l a t i o n a l M a p p in g O R M 工 具来 完 成 它 们能 够 将 对 象映 射到 关系 数 据 库中的 行 从而不再需要复杂的持久层 并且使开发人员只需编写最少的S Q L 在 多数情况下不需编写任何S Q L 免费的 瓜 M a p p i n g工具有很多种 其中比较有影响力的一种就是 H i b e rn a t e H i b e rn a t e 是一个现在很火的 R M a p p i n g 产品 目 前己 经出 到3 0 版 它是开源软件 代码完全公开 它的接口和类虽然简单 但它的功能很强大 它 的 查 询 语 言也 很独 特1 H ib e rn a t e 和其 它的 R M a p p in g 工 具比 更 具 有 亲 和 力 对关系的查询更方便 目 前H i b e rna t e 的用户量和技术支持越来越多了 硕士研究生毕业论文基于M V C模式的J 2 E E 应用研究与开发 4 2 H i b e r n a t e 的体系结构 现在发布的H i b e m a t e 3 0 支持几乎所有的流行的数据库 它可以 和多种W e b 服务器或者应用服务器良 好集成 使得开发者可以根据不同的需要来选择W e b 服务器 图4 1 展示了H i b e rn a t e 使用数据库和配置文件数据来为应用程序提供持久 化的 服务 和持久化的 对象 在应用层和数据库之间的持久层中 有H i b e rn a t e 的持久对象 配置文件及 映射文件 我们在应用和数据库之间创建了 持久层 是对操作数据部分的抽 象 它的任务是存储从应用到数据库的数据 数据的检索 更新和删除 使用 H i b e rn a t e 对数据进行持久化操作 把数据库的表映射成类 把通常对表的操作 变成对对象的操作 这样 我们就有了 面向对象 的很多优点 A p p l i c a t i o n P e r s i s t e n t O b j e c t s H i b e r n a t e D a t a B a s e 图 4 1 H i b e r n a t e体系结构概览 P e r s i s t e n O b j e c t s 州D IJ D B C S e s s i o n F a c t o r J T A D a t a b a s e 图4 2轻型体系结构 硕士研究生毕业论文基于 mv C模式的J 2 E E应用研究与开发 H i b e rn a t e 有好几种不同的运行方式 图4 2 所示为轻型体系结构 在这种体 系结构中使用了H i b e r n a t e A P I 的一个最小子集 应用程序自己 提供了J D B C连 接 并且自行管理事务 下面介绍一种复杂体系结构 如图4 3 所示 这是一种全面解决体系 对于 应用程序而言 所有的底层J D B C J T A A P I 都被抽象化了 H i b e r n a t e 会替你照顾 所有的细节 不同于轻型体系结构中直接和J D B C J T A对话 在这里程序使用了 T r a n s a c t i o n I t a n s a c t i o n F a c t o ry或者C o n n e c t i o n P r o v i d e r A P I 下 面 是图 中 的 一 些 对象 i1 3 1 会话工厂 S e s s i o n F a c t o ry 用于创建会话 是 S e s s i o n的工厂 也是 C o n n e c t i o n P r o v i d e r的客户 它是对编译过的映射文件的一个线程安全的 不可 变的缓存快照 A p p l i c a t i o n S e s s i o n F a c t o ry P e r s i s t e n t O b j e c t s S e s s i o n Tr a n s a t i o n J TAJ NDIJ DBC Da t a b a s e 图4 3 复杂体系结构 会话S e s s i o n H i b e r n a t e 会话封装了一个J D B C连接 是T r a n s a c t i o n的工厂 它是单线程 生命期短促的对象 代表应用程序和持久化层之间的一次对话 它 是由S e s s i o n F a c t o ry创建的 持久化对象P e r s i s t e n t O b j e c t s 生命期短促的单线程对象 包含了持久化状 态和商业功能 它们可能是普通的J a v a B e a n s 唯一不同的是它们现在从属于且 仅从属于一个S e s s i o n 临时对象T r a s i e n t O b j e c t s 临时对象是指目 前还没有从属于一个S e s s i o n 的 持久化类的实例 它们可能刚刚被程序实例化 还没有来得及被持久化 或者是 硕士研究生毕业论文基于M v C模式的J 2 E E 应用研究与开发 被一个己经关闭了的S e s s i o n所实例化的 事务T r a n s a c t i o n 可选 单线程生命期短促的对象 应用程序用它来表示一 批工作的原始操作 是底层的J D B C J T A和C O R B A事务的抽象 它是由S e s s i o n 创建的 一个S e s s i o n 可以跨越多个T r a n s a c t i o n 事务 C o n n e c t i o n P r o v i d e r 可选 J D B C 连接的工厂和池 从底层的D a t a s o u r c e 或 者D ri v e r M a n a g e r 抽象来 对应用程序不可见 T r a n s a c t i o n F a c t o ry 可选 事务实例的工厂 对应用程序不可见 以上介绍了H i b e rn a t e 的体系结构 利用它开发W e b 应用程序的方法很多 在下载的H i b e rn a t e 中包括了h i b e m a t e 2 j a r 和l i b目 录下的2 2 个j a r 包 对要深入 研究H i b e rna t e 的开发者来说 详细了解这些包是必要的 4 3 S e s s i o n F a c t o r y 配置 H i b e rn a t e被设计为可以在许多不同环境下工作 所以它有很多配置参数 幸运的是 大部分都已经有默认值了 H i b e rna t e配置文件可以有两种格式 一 种是h i b e rn a t e p r o p e r ti e s 另一种是h i b e rn a t e c f g x m l H i b e rn a t e 发行包中附带有 示例 的 h i b e m a t e p r o p e rt i e s文件 在 h i b e rn a t e的 s r c 目录下有一个 h i b e m a t e p r o p e r ti e s 模板 它 演示了 一些可变的 参数 我们不必自 己 从头写 修 改模板就可以了 方便我们配置自 己 的参数 使用h i b e rn a t e c f g x m l 配置文件也 很方便 当增加了h b m映射文件的时候 就可以直接在配置文件里加 不必像 h i b e rn a t e p r o p e r t i e s必须在初始化代码中加入 文中实例采用的就是 h i b e rn a t e c 绝A m l 下面简要叙述了S e s s i o n F a c t o ry配置中的主要方面 1 初始化映射文件 n e t s f h i b e rn a t e c f g C o n f i g u r a t i o n 的 一 个实 例代表了 应用程序中 所有的J a v a 类到关系数据库的映射的集合 这些映射是从一些X ML 映射文件中编译而来的 直接实例化C o n fi g u r a t i o n 可以 得到它的一个实例 C o n f i g u r a t i o n 是仅在配置期使用的对象 从第一个S e s s i o n F a c t o ry开始建立 的时候 它就失效了 2 建立S e s s i o n F a c t o ry 硕士研究生毕业论文 基于N t v C模式的J 2 E E 应用研究与开发 当所有的映射都被C o n f i g u r a t i o n 解析之后 应用程序为了得到S e s s i o n 实例 必须先得到它的工厂 这个工厂应该是被应用程序的所有线程共享的 值得注意 的是 H ib e r n a t e 允许 程序实例化多 个S e s s i o n F a c t o ry 这种情况出 现在应用 程序 使用多个数据库的时候 建立S e s s i o n F a c t o ry的代码如下 S e s s i o n F a c t o ry f a c t o r y c o n f i g u r a t i o n b u i l d S e s s i o n F a c t o ry o 3 用户自 行提供J D B C连接 S e s s i o n F a c t o ry可以 使用一个用户自 行提供的J D B C 连接来打开一S e s s i o n 这种设计可以让应用程序来自己管理J D B C连接 应用程序不能在同一个连接上 打开多个并行的s e s s i o n 用户自 行提供J D B C 连接的代码如下 J a v a s g l C o n n e c t i o n c o n n d a t a s o u r c e g e t C o n n e c t i o n o 1 S e s s io n s e s s f a c t o ry o p e n S e s s i o n c o n n 2 T r a n s a c t i o n t x s e s s b e g i n T r a n s a c t i o n o 3 第 3 行是可选的 代表开始一个新的事务 应用程序也可能选择自 行管理 J T A或者J D B C事务 不过 如果使用H i b e rn a t e 的T r a n s a c t i o n 你的客户代码 就可以从底层的实现中 抽象出 来了 t e 如说 你可以 将来在需要的时候切换到 C O R B A连接 而不需要修改程序代码 4 H i b e rn a t e 提供的J D B C连接 H i b e rn a t e 的S e s s i o n F a c t o ry会替你打开连接 而无需用户自 行提供J D B C 连 接 但是 S e s s i o n F a c t o ry必须事先知道连接的参数 有好几种不同的 方法设置参数 文中的实例使用的是h i b e rn a t e c f g x m l 文件 在这个配置文 件中 包含了 元素 在h i b e rn a t e c f g x n il 文件中 我 们设 置了h i b e rn a t e 的很多连接数据库的属性 使用这样的方法 打开一个S e s s i o n 是 很简单的 H i b e r n a t e 提供的J D B C连接的代码如下 S e s s i o n s e s s 0 f a c t o ry o p e n S e s s i o n o 1 T r a n s a c t i o n t x s e s s b e g i n T r a n s a c t i o n o 2 第 1 行代码表示获得了 一个J D B C连接并且实例化了 一个S e s s i o n 后面一 行代码表示开始一个新的事务 可选 所有的H i b e rn a t e 属性名和约束都在n e t s f h i b e m a t e c f g E n v i r o n m e n t 类中定 义 其中最重要的一些属性用途如表4 1 所示 硕士研究生毕业论文基于 Mv C模式的J 2 E E应用研究与开发 表4 一1 h i b e m a t e 主要属性表 属性名用途 h i b e ma t e c o n n e c t i o n d r i v e r c l a s s j d b c 驱动类 h i b e ma t e c o n n e c t i o n u r l j d b c L J R L h i b e ma t e c o n n e c t i o n u s e ma me 数据库用户名 h i b e m a t e c o n n e c t i o n p a s s w o r d数据库用户密码 h i b e rn a t e c o n n e c t i o n p o o l s iz e连接池容量最大数 图中是H i b e rn a t e 的J D B C属性 如果我们设置了这些属性 H i b e rna t e 就会 使用j a v a s g l D r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论