收藏 分享(赏)

【DOC】-人力资源管理系统毕业论文-毕业论文.doc

上传人:dreamzhangning 文档编号:2787656 上传时间:2018-09-27 格式:DOC 页数:52 大小:547.10KB
下载 相关 举报
【DOC】-人力资源管理系统毕业论文-毕业论文.doc_第1页
第1页 / 共52页
【DOC】-人力资源管理系统毕业论文-毕业论文.doc_第2页
第2页 / 共52页
【DOC】-人力资源管理系统毕业论文-毕业论文.doc_第3页
第3页 / 共52页
【DOC】-人力资源管理系统毕业论文-毕业论文.doc_第4页
第4页 / 共52页
【DOC】-人力资源管理系统毕业论文-毕业论文.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、本科生毕业论文(设计)册学院 信息技术学院 专业 计算机科学与技术 班级 2008 届专接本 1 班 学生 王利江 指导教师 刘小红 河北师范大学本科毕业论文(设计)任务书编 号: 信息技术学院 2008 届 论文(设计)题目: 基于 J2EE 的人力资源管理系统 学 院: 信息技术 专 业:计算机科学与技术班 级:2008 届专接本 1 班学生姓名: 王利江 学 号:0661832050 指导教师:刘小红 职 称:实验师1、论文(设计)研究目标及主要任务设 计 一 个 小 型 的 人 力 资 源 管 理 系 统 , 系 统 主 要 包 括 : 人 员 档 案 、 人 事 调 配 、 教育 培

2、 训 、 系 统 管 理 等 四 个 模 块 。2、论文(设计)的主要内容在 设 计 该 系 统 是 , 首 先 应 该 区 别 用 户 的 权 限 。 一 般 情 况 用 户 可 以 拥 有 人员 档 案 、 人 事 调 配 、 教 育 培 训 、 系 统 管 理 等 四 个 模 块 中 的 一 个 或 多 个 模 块 的 权 限 ,只 有 这 样 用 户 登 陆 系 统 后 , 才 可 以 根 据 自 己 的 权 限 进 行 不 同 的 操 作 。 每 个 模块 可 以 执 行 的 操 作 各 不 相 同 , 各 模 块 可 执 行 的 操 作 描 述 如 下 :人 员 档 案 : 可 以

3、 添 加 、 删 除 、 修 改 和 查 询 员 工 信 息 ; 可 以 添 加 、 删 除 、 修 改 员工 档 案 信 息 ; 可 以 添 加 、 删 除 、 修 改 和 查 询 员 工 信 息 ; 可 以 添 加 、 删 除 、 修 改 和 查询 员 工 履 历 ; 可 以 添 加 、 删 除 、 修 改 和 查 询 员 工 合 同 信 息 及 合 同 到 期 天 数 预 测 ; 可以 添 加 、 删 除 、 修 改 和 查 询 员 工 奖 惩 信 息 等 。人 事 调 配 : 对 员 工 的 调 动 信 息 进 行 添 加 、 删 除 、 修 改 和 查 询 操 作 ; 新 近 员 工

4、 、离 退 员 工 及 退 休 员 工 预 测 和 查 询 等 。教 育 培 训 : 维 护 培 训 类 别 信 息 , 对 类 别 进 行 增 、 删 、 改 操 作 ; 对 培 训 记 录 、 培训 成 绩 和 培 训 证 书 进 行 维 护 操 作 等 。系 统 管 理 : 包 括 部 门 级 别 信 息 维 护 , 可 以 对 级 别 信 息 进 行 增 、 删 、 改 、 锁 定 和激 活 操 作 ; 部 门 信 息 维 护 , 可 以 对 部 门 信 息 进 行 增 、 删 、 改 、 合 并 部 门 和 查 看 部 门关 系 图 操 作 ; 用 户 角 色 维 护 , 可 以 对

5、 用 户 角 色 进 行 增 、 删 、 改 和 设 置 角 色 权 限 操 作 ;用 户 信 息 维 护 , 可 以 对 用 户 信 息 进 行 增 、 删 、 改 、 设 定 用 户 权 限 、 锁 定 和 激 活 用 户帐 号 等 操 作 ; 系 统 参 数 设 定 , 可 以 设 定 合 同 到 期 提 醒 天 数 、 员 工 退 休 年 龄 和 每 页 显示 记 录 条 数 等 。 本 系 统 主 要 开 发 环 境 说 明 如 下 :开 发 语 言 : java 语 言应 用 技 术 : struts + hibernate开 发 环 境 : jdk6.0、 Tomcat 6.0、

6、 Oracle 9i 数 据 库3、论文(设计)的基础条件及研究路线深 入 了 解 有 关 java 语 言 、 Tomcat 6.0 运 行 服 务 器 、 Oracle 9i 数 据 库 以及 人 力 资 源 管 理 系 统 的 相 关 知 识 。 做 需 求 分 析 , 对 模 块 功 能 进 行 详 细 设 计 。4、主要参考文献 1 CayS Horstmann,GaryCornell.CoreJava 2.北 京 : 机 械 工 业 出 版 社 。 2 BruceEckel. Thinking in Java.北 京 : 机 械 工 业 出 版 社 。 3 夏 昕 ,曹 晓 钢 ,

7、唐 勇 .深 入 浅 出 Hibernate.北 京 : 电 子 工 业 出 版 社 。 4 孙 卫 琴 精 通 Hibernate: Java 对 象 持 久 化 技 术 详 解 北 京 : 电 子 工 业 出版 社 。 5 Bryan Basham.Hibernate 技 术 手 册 .北 京 : 电 子 工 业 出 版 社 。 6 孙 卫 琴 .精 通 struts-基 于 MVC 的 java web 设 计 与 开 发 .北 京 : 电 子 工业 出 版 社 。 7 Kathy Sierra.SQL 21 天 自 学 通 北 京 : 电 子 工 业 出 版 社 。5、计划进度阶段 起

8、止日期1 搜 集 资 料 3.183.232 开 题 论 证 3.244.53 系 统 设 计 及 调 试 4.64.304 论文写作及修改 5.15.13指 导 教师: 年 月 日教研室主任: 年 月 日河北师范大学本科生毕业论文(设计)开题报告书信息技术 学院 计算机科学与技术 专业 2008 届学生姓名 王利江 论文(设计)题目 基于 J2EE 的人力资源管理系统指导教师 刘小红专业职称 实验师所属教研室计算机技术与应用研究方向 数据库管理课题论证:21 世纪组织将面临锐不可当的经济全球化趋势。飞速发展的技术变革和创新,以及迅速变化的差异化的顾客需求等新竞争环境,组织掌握新的技术或是进入

9、新的市场领域获得的竞争优势成为一种短期效应,越来越多的组织通过构筑自身的人力资源竞争力,维持生存并促进持续发展。人力资源作为知识的承载体,成为组织依靠的对象,在以人为本的观念的熏陶下,人力资源管理在组织中的作用日益突出。但人的复杂性和组织的特有性决定了人力资源管理不是简单的技术性的拷贝,真正的理解人力资源管理的内涵和实施与组织相匹配的结构形式和管理模式是创造竞争优势的关键。人力资源管理系统的作用之一是为人力资源规划建立了人事档案。信息化的人事档案使得查询、调用的速度加快,使得精确分析大量员工的知识、经验、技术、能力和职业抱负成为可能。想要做出有效的人力资源规划,必须以准确、完整的内部人事分析为

10、基础。在诸多的企业资源中,人力资源(Human ResourceHR)的重要性勿庸置疑,甚至有学者将人力资源称为“人力资本” ,并将其置于技术、资本之上。尤其以知识工人为代表的人力资源将成为经济发展的主力。基于这个时代背景,人力资源管理将成为企业管理的重要内容,人力资源管理系统(Human Resource Management System ,HRMS)成为许多企业管理中非常重要的部分。人力资源管理系统作为人力资源管理的一个计算机工具,可以将企业从员工招聘、岗位和组织机构设置、培训、技能、薪资和福利、绩效到离职管理等几乎所有与企业里最重要的资产-人相关的信息用数据库统一管理起来,有效地避免了

11、原先由于人力资源相关数据的离散存储而造成的信息不相容、更新和共享困难等问题,使得企业内人力资源的管理得以走向标准化、科学化、数字化和网络化。基于以上需求本系统是主要应用 JSP + struts + hibernate 技术设计一个小型的人力资源管理系统功,系统主要包括:人员档案、人事调配、教育培训、系统管理等四个模块。方 案 设 计 :在实习过程中进行调研和搜集、查找资料工作,分析业务需求,在此基础上用面向对象的方法进行系统需求分析,从人力资源管理的角度出发,用集中的数据库将与人力资源相关的数据(如员工基本信、员工档案、员工履历、员工调动管理、培训管理、系统管理)统一管理起来,形成集成的信息

12、源。并有友好的用户界面及分析工具。如今的人力资源管理系统如果仅仅基于局域网的 C/S 模式已经难以满足开放式信息管理、共享、查询的需求。因此,可以通过交互式网络数据库访问技术和通用方便的 Web 浏览器界面来完成这些功能。在本系统的开发过程中我采用了 B/S 模式体系结构,基于 UML 统一建模方法,应用 JSP + struts + hibernate 技术,后台的网络数据库为 Oracle 9i。B/S 模式是以 WWW 为技术基础的信息计算模型。它们的核心是利用企业现有的软硬件设备,根据业界开放标准,借鉴和利用 Internet 技术,形成一个虚拟的企业计算环境。B/S 模型是一种从传统

13、 C/S 发展起来,其逻辑上采用 3 层结构,它在前台浏览器和后台数据库服务器之间增加了一个 Web 服务器层,所有的应用程序模块都安装在Web 服务器上。第一层完成用户的接口共,第二层由各种应用服务器完成用户所需要的功能,第三层数据库服务器完成数据存储和管理功能。B/S 模式综合了浏览器、信息服务和 Web 技术,通过一个浏览器访问多个应用服务器,形成点到多点,多点到多点的结构模式,这种结构使开发人员在前端的浏览器方面减少了很多的工作,可以将注意力转移到怎样合理组织信息,提供对客户的服务上来。进 度 计 划 : 1、 通 过 查 阅 资 料 深 入 了 解 有 关 Struts 和 Hibe

14、rnate 技 术 、 Oracle数 据 库 及 相 关 知 识 。2、 做 需 求 分 析 , 对 各 个 模 块 功 能 进 行 详 细 的 设 计 。3、 根 据 设 计 方 案 具体实现各个模块的功能,最后把各个模块整合成完整的系统,以实现的此系统的管理功能,达到用户的要求。4、 对整个系统进行各种完善工作,进行搜集资料、总结,书写毕业论文。指导教师意见:指导教师签名: 年 月 日教研室意见:教研室主任签名: 年 月 日河北师范大学本科生毕业论文(设计)文献综述对于已经习惯了使用传统的 JSP 设计方式实现动态网站的程序员,在刚开始接触Struts 时经常会出现一种困惑,专业书籍和文

15、章中总是使用 Struts Framework 这种说法,Struts 通常也被称为是一种 Web 应用开发的架构(Framework),那么到底什么是架构,软件开发架构的意义又是什么呢?如果将早期的软件开发方式比喻为传统手工业生产方式的话,那么基于软件开发架构的开发方式则是大型现代化工厂生产方式的体现。虽然二者都能够制作出产品,但是在生产效率及产品质量的保证上显然会有巨大的差异。汽车生产厂家在制造一辆汽车时,总是先在各条生产线上制作出不同类型的零件,最终再由专业的技师在专业的组装生产线上将成百上千的零件组装成一台完整的汽车。显然,设计者的主要精力并不是用于重复地制造相同的车轮,相同的方向盘,

16、而是利用现成的车轮组装出一辆辆不同的汽车。同样,开发人员也可以利用软件架构中提供的组建库(如同已经生产好的规范化的汽车核心零部件库),按照既定的组装方式将不同的组建应用在软件产品的各个环节,最终开发出一个完整的,高质量的软件产品。实际上,如果需要汽车设计者也可以将原有的车轮进行改造,例如涂上不同的颜色,贴上不同的装饰物等。同理,软件开发人员可以在现有组件的基础上进行扩展和改进,这实际上充分地实现了软件开发的可扩展性。组件复用是面向对象编程思想的结晶,而在软件架构的基础上进行开发可以最大限度地实现组件的复用。在大型多层结构的软件开发项目中,开发和使用具有可重用性,可扩展性,经过良好测试的软件组织

17、,可以使开发者从大量繁琐的代码工作中解脱出来,专注于软件设计和业务逻辑的实现。通常将被验证为有效的,相同类型问题的解决方案进行抽象,即可提取形成一个应用程序框架,即 Framework。每一种 Framework 都有自己的一套明确的实现机制,通常在 Framework 结构中都会包含一个“命令和控制”组件(“command and control”component),类似于工业生产中的 “控制中心” ,开发人员通过它可以很容易地控制,扩充和实现该 Framework 上的开发结构。随着 Web 开发技术的日益成熟,在 Web 开发领域中出现了许多设计好的软件开发框架,Struts 就是一种

18、基于 MVC 经典设计模式的框架。MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的 3个组成部分。如下图所示:MVC 设计模式的结构图 模型(Model):业务逻辑层。实现具体的业务逻辑,状态管理的功能。MVC 系统中的 Model 模型部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作。Struts 中的 Model 部分一般由 JavaBean 以及 EJB 组成。在 Struts 架构中使用 JavaBean 来提供具体的业务逻辑,即“怎么做” ,对于复杂的系统也可以使用EJB 等组件来实

19、现系统状态维护。这种业务逻辑的细分可以增强可以代码的可重用性。 视图(View):表示层。即与用户实现交互的界面,通常实现数据输入和输出功能。Struts 中的 View 视图部分依然可以采用 JSP 来实现。此外,Struts 还提供了丰富的自定义标记库,View 部分使用这些自定义标签同样可以实现与 Model 部分的有效交互并能够增强显示功能。 控制器(Controller):控制层。起到控制整个业务流程(Flow Control)的作用,实现 View 和 Model 部分的协同工作。Struts 中的 Controller 控制器部分是通过专门的 Servlet 来实现的,该 Ser

20、vlet 是一个 Struts API 中提供的ActionServlet 类型的实例,ActionServlet 类继承了javax.servlet.http.HttpServlet 类,因此该类的实例可以和普通的 Servlet 一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业务逻辑,再把响应结果送回到客户端。Action 对象是开发者定义的类(该类必须是 Struts API 中提供的 Action 类的子类)的实例。在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻辑模块,Action 对象在进行了业务逻辑或调用业务逻辑模块。Action 对象在进行了业务逻辑的处理

21、以后会将应用程序流程转到合适的View 组件,最终将响应送回浏览器客户端。Struts 中提倡 Action 对象只用来决定“做什么” ,相当于一个低层面的控制器,因此也可以将 Action 归纳为Controller 的组成部分。Hibernate 在英文中的意思是“冬眠” ,从这个角度也可以体会到 Hibernate 架构下提供的相关技术可以实现度十角状态的持久性保存。在传统的数据库编程中,开发人员要面对大量重复行代码的编写,以实现对不同数据表中的数据的获取,并将获取到的记录数据封装成对象,在处理完成之后如果需要进行对象状态的存取,需要将对象中的数据拆卸成数据库记录中的对应字段的值,然后向

22、数据库中进行存取。这种工作方式显然没有实现真正意义上的数据存取阶段的面向对象。虽然数据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列表数据的不同,使得开发人员必须要不厌其烦地书写与相应的实体类对应的封装处理过程。而在 Hibernate 中,类似这种重复性高,工作量大,但是又必须保证高质量完成的体力活,全部由 Hibernate 接管过去。这对广大的 Java 开发人员无疑是个非常好的消息。Hibernate 本质上是一个面向 Java 开发环境的对象/关系数据库映射工具。在Hibernate 之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会费长麻烦。而借助 Hi

23、bernate 对象/关系数据库映射技术,可以非常轻松地将以面向对象思想封装的对像的各个状态数据映射到基于 SQL 的关系模型数据结构中去。如下图所示:Hibernate 工作示意图河北师范大学本科生毕业论文(设计)翻译文章与对象共事Hibernate 是完整的对象/关系映射解决方案,它提供了对象状态管理(state management)的功能,是开发者不再需要理会地层数据库系统的细节。也就是说,相对于常见的 JDBC/SQL 持久层 方案中需要管理 SQL 语句,Hibernate 采用了更自然的面向对象的视角来持久化 Java 应用中的数据。换句话说,使用 Hibernate 的开发者应

24、该总是关注对象的状态,不必考虑 SQL 的执行。这部分细节已经由 Hibernate 掌管妥当,只有开发者在进行系统性能调优的时候才需要进行了解。1、Hibernate 对象状态Hibernate 定义并支持下列对象状态: 瞬时由 New 操作符创建,且尚未与 Hibernate Session 关联的对象被认定为瞬时的。顺势对象不会被持久化到数据库中,也不会被赋予持久化标识。如果瞬时对象在程序中被有被引用,它会被垃圾回收器销毁。使用 Hibernate Session 可以将其变为持久状态。 (Hibernate 会自动执行必要的 SQL 语句) 持久持久的实例在数据库中有对应的记录,并拥有

25、一个持久化标识,持久的实例可能是刚被保存的,或刚被加载的,无论哪一种,按定义,它存在于与其相关联的 Session 作用范围内,Hibernate 会检测到处于对象数据与数据库同步。开发者不需要手动执行 Update。将对象持久状态转变成瞬时状态同样也不需要手动执行Delete 语句。 托管与持久对象关联的 Session 被关闭后,对象就变为托管的。对托管对象的引用依然有效,对象可继续被修改。托管对象如果重新关联到某个 Session 上,会在次转变为持久的(在 Detached 期间的改动将被持久化到数据库) 。这个功能使得一种编程模型,即中间会给用户思考时间的长时间余兴的操作单元的编程模

26、型成为可能。我们称之为应用程序事务,即从用户观点看是一个操作单元接下来我们来细致的讨论下状态及状态间的转换(以及触发状态转换的 Hibernate 方法) 。2、使对象持久化Hibernate 认为持久化类新实例化的对象是瞬时的。我们可通过将瞬时对象与Session 关联而把它变为持久的。DomesticCat fristz = new DomesticCat();Fristz.setColor(Color,GINGER);Fristz.setSex(M);Fristz.setName(“Fritz”);Long generatesId = (Long)sess.save(fritz);如果

27、Cat 的持久化标识是 generates 类型的,那么该标识会自动在 save()被调用时产生并分配给 Cat。如果 Cat 的持久化标识应当在调用 save()之前动手赋予给 Cat。你也可以按照 EJB3 early draft 中定义的语义,使用 persist()替代 save() 。此外,你可以用一个重载版本的 save()方法。DomesticCat pk = new DomesticCat();pk.setColor(Color.TABBY);pk.setSex(F);pk.setName(“PK”);pk.setKittens(new HashSet();pk.addKitt

28、ens(fritz);sess.save(pk,new Long(1234);如果你持久化的对象有关联的对象(例如上例中的 Kittens 集合)那么对这些对象进行持久化的顺序是任意的(也就是说可以先对 Kittens 进行持久化也可以对 pk 进行持久化) ,除非你在外键列上有 NOT NULL 约束。Hibernate 不会违反外键约束,但是如果你用错误的顺序持久化对象(译注:载 pk 持久化之前持久化 kitten) ,那么可能会违反 NOT NULL 约束。通常你不会为这些细节烦心,因为你很可能会使用 Hibernate 的传播性持久化(transitive persistence)功

29、能自动保存相关联那些对象。这样违反 NOT NULL 约束的情况都不会出现,Hibernate 会管好所有的事情。3、装载对象如果你知道某个实例的持久化标识(identifier) ,你就可以使用 Session 的 load()方法来获取它。Load()的另一个参数是指定类的.class 对象。本方法会创建指定的持久化实例,并从数据库加载其数据(state) 。Cat fritz = (Cat) sess.load(Cat.class, new Long(id);/ you need to wrap primitive identifiersLong id = 1234;DomesticCa

30、t pk = (DomesticCat) sess.load(DomesticCat.calss, new Long(id);此外,你可以把数据(state)加载到指定的对象实例上(覆盖掉该实例原来的数据) 。Cat cat = new DomesticCat();/load pks state into catSess.load(cat, new Long(pkId);Set kittens = cat.getKittens();请注意如果没有匹配的数据记录,load()方法可能爆出无法恢复的异常(unrecoverable exception)。如果累得映射使用了代理(proxy) ,lo

31、ad()方法会返回一个未初始化的代理,有不想载数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用的上了。如果为相应类映射关系设置了 batch-size,那么使用这种方式允许多个对象被一批装载(应为返回的是代理,无需从数据库中抓去所有对象的数据) 。如果你不确定是否有匹配的行存在,应该使用 get 方法,他会立刻访问数据库,如果没有对应的记录,会返回 null。Cat cat = (Cat) sess.load(Cat.class, id);if(cat=null)cat = new Cat();sess.save(cat, id);return cat;你甚至可以选用某个 L

32、ocakMode,用 SQL 的 SELECTFOR UPDATE 装载对象。Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);注意,任何关联的对象或者包括的集合都不会被以 FOR UPDATE 方式返回,除非你指定了 lock 或者 all 作为关联(association)的级联风格(cascade style).任何时候都可以使用 refresh()方法强迫装载对象和它的集合。如果你使用了数据库触发器功能来处理对象的某些属性,这个方法就很有用。sess.save(cat);sess.flush(); /force the

33、SQL INSERTsess.refresh(cat); /re-read the state (after the trigger executes)此处通常会出项一个重要问题:Hibernate 会从数据库中装载多少东西?会执行多少条 相应的 SQL SELECT 语句?这取决于抓取策略(fetching strategy) 。参考文献:1 hibernate_reference 3.0Working with objectsHibernate is a full object/relational mapping solution that not only shields the de

34、veloper from the details of the underlying database management system, but also offers state management of objects. This is, contrary to the management of SQL statements in common JDBC/SQL persistence layers, a very natural object-oriented view of persistence in Java applications.In other words, Hib

35、ernate application developers should always think about the state of their objects, and not necessarily about the execution of SQL statements. This part is taken care of by Hibernate and is only relevant for the application developer when tuning the performance of the system.1. Hibernate object stat

36、esHibernate defines and supports the following object states: Transient - an object is transient if it has just been instantiated using the new operator, and it is not associated with a Hibernate Session. It has no persistent representation in the database and no identifier value has been assigned.

37、Transient instances will be destroyed by the garbage collector if the application doesnt hold a reference anymore. Use the Hibernate Session to make an object persistent (and let Hibernate take care of the SQL statements that need to be executed for this transition). Persistent - a persistent instan

38、ce has a representation in the database and an identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a Session. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work

39、completes. Developers dont execute manual UPDATE statements, or DELETE statements when an object should be made transient. Detached - a detached instance is an object that has been persistent, but its Session has been closed. The reference to the object is still valid, of course, and the detached in

40、stance might even be modified in this state. A detached instance can be reattached to a new Session at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them app

41、lication transactions, i.e. a unit of work from the point of view of the user.Well now discuss the states and state transitions (and the Hibernate methods that trigger a transition) in more detail.2. Making objects persistentNewly instantiated instances of a persistent class are considered transient

42、 by Hibernate. We can make a transient instance persistent by associating it with a session:DomesticCat fritz = new DomesticCat();fritz.setColor(Color.GINGER);fritz.setSex(M);fritz.setName(“Fritz“);Long generatedId = (Long) sess.save(fritz);If Cat has a generated identifier, the identifier is genera

43、ted and assigned to the cat when save() is called. If Cat has an assigned identifier, or a composite key, the identifier should be assigned to the cat instance before calling save(). You may also use persist() instead of save(), with the semantics defined in the EJB3 early draft.Alternatively, you m

44、ay assign the identifier using an overloaded version of save().DomesticCat pk = new DomesticCat();pk.setColor(Color.TABBY);pk.setSex(F);pk.setName(“PK“);pk.setKittens( new HashSet() );pk.addKitten(fritz);sess.save( pk, new Long(1234) );If the object you make persistent has associated objects (e.g. t

45、he kittens collection in the previous example), these objects may be made persistent in any order you like unless you have a NOT NULL constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a NOT NULL constraint if you save() the o

46、bjects in the wrong order.Usually you dont bother with this detail, as youll very likely use Hibernates transitive persistence feature to save the associated objects automatically. Then, even NOT NULL constraint violations dont occur Hibernate will take care of everything. Transitive persistence is

47、discussed later in this chapter.3. Loading an objectThe load() methods of Session gives you a way to retrieve a persistent instance if you already know its identifier.load() takes a class object and will load the state into a newly instantiated instance of that class, in persistent state.Cat fritz =

48、 (Cat) sess.load(Cat.class, generatedId);/ you need to wrap primitive identifierslong id = 1234;DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );Alternatively, you can load state into a given instance:Cat cat = new DomesticCat();/ load pks state into catsess.load( cat, new

49、 Long(pkId) );Set kittens = cat.getKittens();Note that load() will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, load() just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This behaviour is very useful if you wish to create an association to an object without actually loading it from

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报