




已阅读5页,还剩102页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计实用技术 Hibernate 目标 深入理解持久层框架掌握Hibernate配置方法 开发流程掌握Hiberate性能优化 学习对象 具备一定Java编程能力的初级程序员 预备知识 了解数据库的基本概念熟悉常用SQL语言 具备一定的Java编程能力 课程内容 持久层和ORMHibernate基础Hibernate性能优化 程序设计实用技术 JAVA方向第一讲持久层和ORM 章节目标 理解持久层和ORM 持久层概述 什么是持久化 什么是持久层 持久化 与 持久层 之间的关系 持久层概述 什么是持久化 将数据保存到物理的储存器 硬盘 磁带等 上的过程叫持久化 什么是持久层 专门负责处理与物理数据相关操作 持久化数据 以供日后使用 的独立层次 之间的关系 持久化是动词 表示将内存中的数据存储到数据库或其他媒介 持久层是名词 实现数据持久化的一个相对独立的领域 层 持久层在MVC中 持久层解决了MVC什么问题 当发生以下三种情况 1 表示层发生变化 2 业务逻辑层发生变化 3 底层数据格式或持久化机制发生变化数据持久化代码不需要重新编译为什么可以达到上述目标 是什么来的 解耦合 持久层概述 什么是解耦合 采用某种方法将紧密耦合的关系转换为松散耦合的关系的过程什么是耦合度 两个事物之间的耦合程度什么是耦合度适中 事物之间的耦合度符合实际情况或要求 持久层概述 现实中还有哪些解耦合的实例 电脑 各个组件 显示器 CPU 硬盘 内存 之间相互独立 组合在一起又能一起工作 连接它们的是共同实现的标准接口 思考集成显卡 网卡 电脑上的USB接口与原来的串口之间存在耦合度区别 建筑中的砖混结构 框架结构 社会上各行各业的产生 也是一种解耦合的过程 发电厂的建立 使工厂不必为了开动机器去发电 工程化也可以说就是一个解耦合的过程 现实中的解耦合的实例 持久层概述 软件设计中解耦合的自然进化 实例 记录论坛用户登录次数 publicbooleanaddLoginCount Stringid intcount Connectionconn null Statementstmt null try Class forName oracle jdbc driver OracleDriver conn DriverManager getConnection jdbc orcle thin dbServer 1521 forum MyUserName MyPassword StringsqlStr updateBBSUsersetloginCount loginCount 1 whereid id stmt conn createStatement returnstmt execute sqlStr catch ClassNotFoundExceptione e printStackTrace publicbooleanaddLoginCount Stringid intcount Connectionconn null Statementstmt null try Class forName Config getValue JDBC DRIVER conn DriverManager getConnection Config getValue DB URL Config getValue DB USER Config getValue DB PWD StringsqlStr updateBBSUsersetloginCount loginCount 1 whereid id stmt conn createStatement returnstmt execute sqlStr catch ClassNotFoundExceptione e printStackTrace 实例 记录论坛用户登录次数 从编写代码的角度看他们的优点 第一段代码很容易掌握 容易理解 直截了当 可以很好的执行 第二段代码要引入一个外部文件 用来保存数据库连接信息 不大容易实现 但也比较好理解 也可以很好的执行 从耦合度的角度看 比较其优缺点 如数据库密码泄露 管理员要修改数据库密码 第一段代码 找到所有的与数据库连接相关的代码 修改密码 重新编译修改后的文件 重新部署软件 第二段代码 修改外部文件中配置的密码 不需要重新编译 不需要重新部署软件 进一步改进的方法 Connectionconn DBHelper getConnection 再进一步改进的方法 软件设计中解耦合的目标 为什么要解耦合 从MVC理解软件设计中的解耦合 软件系统解耦合的目标 应用程序层内部解耦合 业务逻辑与数据访问逻辑分离应用程序与资源层解耦合 应用层逻辑与底层数据库 操作系统结构分离 程序设计实用技术 JAVA方向第二讲DAO模式解耦合 解耦合实例 DAO模式 示例 银行转帐 现有 账户A 账户B 转帐金额amount 由 账户A 转给 账户B 编写一个方法 实现转帐 publicbooleanzhuanzhang Stringuser1 Stringuser2 intamount Connectionconn DBHelper getConnection 获得数据库连接PrearedStatementstmt conn prepareStatement select fromuserwhereusername stmt setString 1 user1 ResultSetuser1 Set stmt executeQuery if user1 Set next 检查 账户A 余额是否够转帐 够则减掉要转帐的金额if user1 Set getInt amount amount PrearedStatementstmt conn prepareStatement updateusersetamount amount 示例 银行转帐 上例实现了三个操作 检查 账户A 的余额是否够转帐 在 账户A 中减掉要转帐的金额 在 账户B 中加上要转帐的金额 最后DAO模式下的代码 publicbooleanzhuanzhang Stringuser1 Stringuser2 intamount UseruserA UserProxy getUser user1 分离数据访问逻辑UseruserB UserProxy getUser user2 returnuserA accord userB amount Factory模式 Proxy模式 DAO模式 DAO模式解耦合的目标 在DAO模式中引入Factory模式 如何理解Factory工厂模式 根据给定的模具 类名称 从仓库里取出相应原料 类代码 加工成产品 类实现或对象 Factory模式 Factory模式 UserDAOuserDAO DAOFactory getDAO UserDAO class UseruserA userDAO getUser User1 Factory在DAO的作用 根据需要加载相应的实现 具体点说就是 给定UserDAO class类名 产生UserDAO类实现 之前的实现 完成银行转帐 publicbooleanzhuanzhang Stringuser1 Stringuser2 intamount UserDAOuserDAO DAOFactory getDAO UserDAO class UseruserA UserDAO getUser user1 UseruserB UserDAO getUser user2 returnuserA accord userB amount 最终版本 现实生活中的Proxy代理 软件开发中的Proxy代理 在DAO模式中引入Proxy模式 在DAO模式中引入Proxy模式 publicclassUserProxy publicstaticUsergetUser Stringuserid UserDAOuserDAO UserDAO DAOFactory getDAO UserDAO class returnuserDAO getUser userid publicstaticvoidsava Useruser UserDAOuserDAO UserDAO DAOFactory getDAO UserDAO class userDAO save user 最终版本 为什么要引入Proxy 使得代码看起来更整洁 为附加其他功能留接口 为什么要引入Proxy 思考类比房屋建筑中的代理层 最终版本 DAO模式总结 DAO模式总结 DAO模式总结 1 interface接口 在实现解耦合中的作用 2 JavaClass动态加栽 3 XML配置文件 回顾与DAO相关的知识 提升持久层性能 软件系统中有哪些性能指标 提升持久层性能 数据库容量执行某次业务的时间同时并发访问数等等 软件系统中有哪些性能指标 系统性能低下有哪些原因 提升持久层性能 硬件环境 网络环境差软件配置环境低 操作系统 数据库系统 达不到系统使用要求设计本身存在缺陷 系统性能低下有哪些原因 设计本身存在缺陷 主要表现在 算法不科学合理 资源的管理和调配失当哪一个是最主要因素 提升持久层性能 从前有一个钢铁工厂 有 个车间 每个车间的生产效率都很高 工人技能高 生产管理科学 设备先进 每个车间都设立有自己的原料采购车队 以保障生产所需的原料 存在的问题 如何解决 提升持久层性能 从前有一个DAO模式的系统 有 个子过程 每个子过程的执行效率都很高 代码非常简练 并经过代码优化 每个子过程都包含有自己的数据库连接 以保障有效的数据存取 存在的问题 如何解决 提升持久层性能 问题出现的前提 大量 提升持久层性能 市场对钢铁的需求 大量 增长 用户同时登陆的数量 大量 增长 会出现什么大问题 提升持久层性能 措施 ConnectionPool 数据库连接池 提升持久层性能 ConnectionPool 数据库连接池 提升持久层性能 数据库连接池技术带来的优势 1 资源重用 2 更快的响应速度 3 控制资源分配 4 避免连接泄露 提升持久层性能 措施 缓存 计算机领域的缓存有哪些 缓存什么东西 为什么要缓存 缓存到什么地方 软件系统中的缓存主要缓存什么 提升持久层性能总结回顾 数据库连接池引入的原因 提升系统性能 数据库连接池与持久层的关系 持久层负责数据访问 数据库连接池负责统一管理和调度数据库连接 有了数据库连接才能访问数据 提升持久层性能 理解持久层 DAO 数据库连接池这些概念的目的是什么 是 对现有持久层来历和发展方向有深入的理解 为应用开发打下理论基础 不是 使用这些理论知识实现软件项目中的持久层 因为 不必为了吃面包 就要去种小麦 无论是商业领域还是开源社区 都为我们提供了丰富的 久经考验的持久层组件 比如Hibernate 程序设计实用技术 JAVA方向第三讲Hibernate基础开发 回顾 现有持久层框架 HibernateApacheOJBCayenneJaxoriBatisjRelationFrameworkmirageSMYLETopLink oracle 非开源产品 Hibernate是什么 持久层框架 ORM映射理论 提供强大 高性能的对象到关系型数据库持久化服务的框架产品 开源 Hibernate的起源 Hibernate的设计者 GavinKing2001年末 正式发布第一个版本2003年中 发布Hibernate22003年末 Hibernate被开源组织JBoss收纳2005年初 发布Hibernate3 为什么如此快速的成功 快速发布 即时响应全面的回归测试避免过渡设计集权文档避免标准化5分钟内成功运行Hibernate开发人员的责任感 快速起步 快速起步 准备工作 下载 HibernateHibernate ExtensionMiddlegen HibernateJUnitMysql准备开发工具 EclipseMyEclipse4准备数据库环境 Mysql Oracle Hibernate配置 Hibernate日志 第一程序 代码解释 初始化Hibernate配置管理类 Configuration 通过Configuration类实例创建Session的工厂类 SessionFactory 通过SessionFactory得到 Session 图释 理解 Hibernate完成了什么配置工作 如何完成的 Hibernate在数据操作中起到了什么作用 如何做的 基础语法 基础语法 Configuration类 负责管理Hibernate的配置信息 Configurationconfig newConfiguration configure Filefile newFile D ora myHibernate hbm xml Configurationconfig newConfiguration configure file 基础语法 SessionFactory类 负责创建Session实例 是线程安全的 可并发同时访问 Configurationconfig newConfiguration configure SessionFactoryfactory config buildSessionFactory 基础语法 SessionFactory类 SessionFactory实例是Configuration实例config根据当前的配置信息构造的 多个数据库就有多个config实例 并构造不同的SessionFactory SessionFactory中保存着数据库配置的所有映射关系 也维护缓存等 消耗巨大 应重点考虑重用策略 基础语法 Session类 持久化操作的基础 Configurationconfig newConfiguration configure SessionFactoryfactory config buildSessionFactory Sessionsession factory openSession 基础语法 HibernateSession与HttpSession的区别 基础语法 Session数据持久化方法 SaveGet LoadflushDeleteQuery Criteria 基础配置 基础配置 Hibernate基础配置 主要针对SessionFactory展开Hibernate内部配置与应用服务器 或容器 的相关配置 基础配置 Hibernate配置方法 主要针对SessionFactory展开使用配置文件 hibernate hbm xml hibernate propert
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长期卧床便秘病人的护理
- 亲子自驾旅行课件
- 景区讲解人员培训
- 关注口腔健康预防蛀牙医疗保健演示模板
- 亲子关系构建课件
- 行政人事工作总结计划
- 公司级爆破企业安全培训课件
- 公司级安全生产培训记录课件
- 《西游记》课件内容
- 事故安全预案培训总结课件
- 职高课件模板
- 【生物】第四节 激素调节课件-2025-2026学年人教版生物八年级上册
- 卫生院安全生产培训课件
- 期中专题复习-词汇句型训练-2025-2026学年 译林版2024 英语八年级上册 原卷
- 2025年全国中小学校科普知识竞赛题库(+答案)
- 2.2创新永无止境教学课件 2025-2026学年度九年级上册 道德与法治 统编版
- 矿山爆破作业安全培训课件
- 2025-2026学年九年级英语上学期第一次月考 (四川成都专用) 2025-2026学年九年级英语上学期第一次月考 (四川成都专用)解析卷
- 高陡边坡稳定性控制技术及其工程实践
- 河南省委党校在职研究生入学考试真题及答案
- 2025年社区工作者招聘考试宗教学试卷
评论
0/150
提交评论