版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用Hibernate完成对象持久化本章目标了解Hibernate的运行原理了解Hibernate的优势掌握使用Hibernate的基本步骤会使用工具简化Hibernate操作本章简介这一章介绍了JavaEE的基本概念、JavaEE核心的API和JavaEE中不同的开发角色。JavaEE技术提供了一整套基于组件的方案来设计、开发、装配和部署企业级应用程序。为开发者开发企业级的解决方案提供了强有力的支持。本章的重点是WebLogic服务器的安装、配置和相应的环境变量的修改。今天,越来越多的开发者想要编写企业级分布式事务处理的应用程序,而这些应用程序必须要在速度、安全性和可靠性等方面发挥出色。如果你已经在这一领域从事工作,你应该了解在当今这个技术高速发展、要求苛刻的电子商务和信息技术的世界里,企业级的应用程序必须具有以下特点:花费更少的金钱、具有更快的速度和占用更少的资源。为了减少费用、快速设计和开发企业级的应用程序,Java2PlatformEnterpriseEdition(JavaEE)技术提供了一整套基于组件的方案来设计、开发、装配和部署企业级应用程序。JavaEE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用组件的能力、基于扩展标记语言(XML)的数据交换、统一的安全模式和灵活的事务控制。你不仅可以比以前更快地开发出新的解决方案,而且独立于平台的基于组件的JavaEE解决方案不再受任何软件服务器厂商和应用程序编程接口(API)的限制。客户可以自己选择最合适于他们的商业应用和所需技术的产品和组件。为什么需要Hibernate2007年,北京某中心Y2学员小周在做毕业设计项目的时候,发现反反复复地写DAO层代码太麻烦了,如示例代码4-l所示,是一个租房网的租房业务逻辑类中封装的录入房屋信息的方法。他负责的模块每个表都少则十几个字段,多则几十个字段,这种重复性的编码工作没有任何创造性,而且容易出错。publicvoidinsertFwxx(FWXXfwxx)
{openConn();Stringsql="";sql="insertintoTBL_FWXX(uid,jdid,lxid,shi,ting,fwxx,zj,title,date,telephone,lxr)
values(?,?,?,?,?,?,?,?,?,?,?)";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1,fwxx.getUid());//uidpstmt.setInt(2,fwxx.getJdid());//街道表idpstmt.setInt(3,fwxx.getLxid());//房屋类型表idpstmt.setInt(4,fwxx.getShi());//几室pstmt.setInt(5,fwxx.getTing());//几厅pstmt.setString(6,fwxx.getFwxx());//租房信息pstmt.setInt(7,fwxx.getZj());//月租金pstmt.setString(8,fwxx.getTitle());//标题pstmt.setString(9,(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss")).format(newDate()));//插入时间pstmt.setString(10,fwxx.getTelephone());pstmt.setString(11,fwxx.getLxr());pstmt.executeUpdate();}catch(SQLExceptione)
{e.printStackTrace();}closeAll();}问题解决这样的编码工作太繁琐了,占用了他大部分的开发时间。不过为了实现一个功能强大、让自己满意的系统,他坚持了下来。在实现了所有功能之后,他觉得肯定有更聪明的方法!在老师的指导下,他自学了课本上没有介绍过的反射技术,深入学习了JDBC中metadata相关的知识,一个方案在他头脑中成形了。小周是一个事情没做好吃饭睡觉都不踏实的人。短短3天时间,他实现了一个通用的DAO类。从而再也不用理会那些繁琐的字段名和pstmt的getter/setter方法了。Hibernate的价值在于,对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。到本章结束的时候,我们可以看到:使用Hibernate之后的DAO层代码和之前的相比清爽了多少!Hibernate是什么持久化“对象-关系”映射持久化程序运行的时候,有些程序数据保存在内存中,当程序退出后,这些数据就不复存在了,所以,我们称这些数据的状态为瞬时的(Transient)。有些数据,在程序退出后,还以文件等形式保存在存储设备(硬盘、光盘等)中,我们称这些数据的状态是持久的(Persistent)。JDBC机制JDBC就是一种持久化机制。将程序数据直接保存成文本文件也是持久化机制的一种实现。但我们常用的是将程序数据保存到数据库中。在三层结构中,DAO层(数据访问层)有时候也称为持久
化层,如图4-2所示。因为这一层承担的主要工作就是将数
据保存到数据库中或把数据从数据库中读取出来。“对象-关系”映射JavaEE应用服务器以容器的形式为每一个组件类型提供底层服务。因为我们不需要自己开发这些服务,这使我们可以全力以赴地着手处理商业逻辑问题。一个JavaEE应用程序运行前,它们必须被部署到JavaEE应用服务器中。通常,一个JavaEE的应用服务器提供了EJB容器和Web容器。EnterpriseJavaBeans(EJB)容器用来管理JavaEE应用程序的EJB的运行。Web容器用来管理JavaEE应用程序中JSP页面和Servlet等Web组件的运行。综上所述,Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。它能很大程度地简化DAO层的编码工作,下面我们就来看看Hibernate如何发挥它的神奇魔力。使用Hibernate的基本步骤准备工作需要的jar包Hibernate的官方主页是***hibernate***,我们需要的jar包都可以从官方网站上下载得到。在Eclipse中,MyEclipse插件已经集成了对Hibernate开发的支持,所以我们不必自己下载Hibernate依赖的jar包。在弹出的“HibernateSupportforMyEclipse”对话框中,选择“Hibernate3.2”单选项。如果想查看MyEclipse将自动为我们添加哪些包,可以单击“Viewandeditlibraries…”按钮查看,Hibernate配置文件实例类和映射文件使用Hibernate实现用户添加使用Hibernate实现数据的删改与修改类似,删除时也需要先加载数据。在使用Hibernate编写持久化代码时,不需要再有数据库表、字段等概念。根据面向对象的语义,删除操作方法的参数理所当然是将要删除的对象,而不是主键。以面向对象的思维编写代码是Hibernate持久化操作接口设计的一个理念。使用工具简化Hibernate开发我们首先看一下如何使用MyEclipse简化Hibernate的开发。在4.4节,我们使用MyEclipse工具给项目添加Hibernate支持,自动添加了Hibernate配置文件。使用MyEclipseHibernateConfigEditorHibernate配置文件,如图4-9所示,单击DBConnectProfile旁边的“New…”按钮,用向导配置数据库连接信息。在弹出的DatabaseProfile对话框中,Profilename可以随意。URL一定要填写正确,单击“下一步”按钮。在SchemaDetails对话框中,选择正确的数据库,单击“完成”按钮。MyEclipse就会自动在Hibernate配置文件中配置好数据库相关参数,如图4-11所示。那么映射文件呢?例如,TblUser.hbm.xml,是不是也有工具辅助完成呢?是的!映射文件完全可以使用工具自动生成!在Eclipse工作区右上角选择进入MyEclipseDatabaseExplorer透视图(也可以通过菜单“窗口”
“透视图”
“MyEclipseDatabaseExplorer”进入)在项目中使用Hibernate
前面介绍了使用MyEclipse简化“3个准备”,但“7个步骤”怎样简化呢?我们曾经使用BaseJdbcDAO简化JDBC的编码,现在采用类似的方法简化Hibernate的编码。在给项目添加Hibernate支持的过程中还生成了一个HibernateSessionFactory工具类,我们也好好利用一下。这里只提供了简单的查询方法,Hibernate查询我们将在第六章学习。需要注意的是,get和delete的传入参数类型为Class和Serializable。Class表示“类”,可以通过“类名.class”得到其实例,如“User.class”。Serializable是一个接口,不包含任何需要实现的方法,只是表示实现这个接口的类可以序列化。现在我们就继承BaseHibernateDAO类并实现FwxxDAO接口,完成房屋信息管理的业务逻辑,总结Hibernate是一个基于JDBC的持久化解决方案,是一个优秀的“对象-关系”映射框架。
使用Hibernate前要做好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育学通关提分题库(考点梳理)
- 2024年度山西省高校教师资格证之高等教育心理学题库附答案(基础题)
- 江苏开放大学形考任务2024年秋包装设计060712形成性考核作业答案
- 2024年商品信用销售协议
- 合同法总作业及参考答案
- 大理石原料买卖化协议文档
- 2024年规范转供电服务协议模板
- 2024年施工协议监管要点明细
- 2024年木模板工程承包协议样本
- 2024年工厂加工承揽协议
- 苏轼生平及创作整理
- 柴油发电机组应急预案
- 语文《猜猜他是谁》教案
- 绘本:让谁先吃好呢
- 宽容待人正确交往中小学生教育主题班会
- 移动通信网络运行维护管理规程
- 龙头股战法优质获奖课件
- 小班幼儿语言活动教案100篇
- 中国青瓷艺术鉴赏智慧树知到答案章节测试2023年丽水学院
- 中广国际总公司-CR2010卫星接收解码器
- 社会保险业务申报表(填表说明)
评论
0/150
提交评论