《chHibernate基础》PPT课件.ppt_第1页
《chHibernate基础》PPT课件.ppt_第2页
《chHibernate基础》PPT课件.ppt_第3页
《chHibernate基础》PPT课件.ppt_第4页
《chHibernate基础》PPT课件.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第7章,Hibernate基础,内容回顾,什么是自定义标签库 Struts2标签是如何分类的? 如何使用控制标签 如何使用数据标签 如何使用UI标签,思考问题,什么是ORM? 什么是持久化? Hibernate的作用? Hibernate有哪些常用组件? 如何下载与安装Hibernate? MySqL数据库的安装及使用方法。,本章任务,下载并安装Hibernate 下载并安装使用MySql数据库,本章目标,了解什么是ORM? 理解持久化的概念 掌握Hibernate的作用? 掌握Hibernate有哪些常用组件? 掌握下载与安装Hibernate的方法 掌握下载与安装使用MySql数据库的方法,Hibernate概述,Hibernate是一个免费的开源Java包,它使得程序与数据库的交互变得十分容易,更加符合面向对象的设计思想,像数据库中包含普通Java对象一样,而不必考虑如何把它们从数据库表中取出。使开发者可以专注于应用程序的对象和功能,而不必关心如何保存它们或查找这些对象。甚至在对SQL语句完全不了解的情况下,使用hibernate仍然可以开发出优秀的包含数据库访问的应用程序。,1 回顾JDBC简介,Java访问数据库最原始的方法是通过JDBC来完成的。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC是J2EE标准的一部分,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。,1.1 JDBC提供的工具接口,java.sql包提供了JDBC API,开发者可以通过它们编写数据库的程序代码。在java.sql包中常见的类和接口包括以下内容。 DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。 Connection类:负责维护JSP/JAVA数据库程序和数据库之间的联机。可以建立三个非常有用的类对象。,1.1 JDBC提供的工具接口,Statement类:通过Statement类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作 PreparedStatement类:PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待 使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率 ResultSet类:负责存储查询数据库的结果。并提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。,1.2 JDBC访问数据库,使用JDBC操作数据库,一般基本都是如下几个步骤: (1)载入数据库驱动。不同的数据库驱动程序是不同的,一般由数据库厂商提供这些驱动程序。 (2)建立数据库连接,获得Connection对象。 (3)根据SQL语句建立Statement对象或者PreparedStatement对象。 (4)用Connection对象执行SQL语句,获得结果集ResultSet对象。 (5)然后一条一条读取结果集 ResultSet 对象中的数据,保存在某个Java对象中。 (6)如果是修改或者删除操作需要对数据发commit命令。 (7)最后依次关闭各个 Statement对象和Connection对象。,1.2 JDBC访问数据库JDBC API,JDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果,Connection,DriverManager,Statement,ResultSet,客户端,数据库服务器,1,2,3,4,DriverManager :依据数据库的不同,管理JDBC驱动 Connection :负责连接数据库并担任传送数据的任务 Statement :由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果,1.3 持久化层,访问数据库代码与业务逻辑混杂在一起带来了很多问题,这样的程序设计严重阻碍了程序的可扩展性和适应性,所以有必要要把涉及数据库操作的代码分离出来与业务逻辑分离。就形成了所谓“持久化层”的概念。 持久化(Persistence),即把临时性数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等(在本书中介绍的“持久化”仅针对将存储数据库的情况)。,1.4 关系型数据库与面向对象的冲突,面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。而Java是完全面向对象的语言,这个冲突就表现的越发明显。 对目前的J2EE信息化系统而言,通常采用面向对象分析和面向对象设计的过程。系统从需求设计到系统设计都是按面向对象方式进行。但到了详细设计阶段,由于数据持久化需要保存到关系数据库,不得不自底向上修改设计方案,又回到了按照过程进行编程的老路上来,这是非常令人沮丧的。,2 ORM介绍,ORM的全称是Object/Relation Mapping,即对象/关系映射。 ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。 目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink,JDO,JPA等等,当然还包括本章介绍的hibernate。,2.1 什么是ORM,面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解决方案,ORM框架就是这样的解决方案。 ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:完成面向对象的程序设计语言到关系数据库的映射。基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势。,2.2 ORM带来了什么,面向对象的程序设计语言,代表了目前程序设计语言的主流和趋势,其具备非常多的优势,比如: 面向对象的建模、操作。 多态、继承。 摒弃难以理解的过程。 简单易用,易理解性。,2.3 流行的ORM框架简介,目前ORM框架的产品非常多,除了各大著名公司、组织的产品外,甚至,其他一些小团队也都有推出自己的ORM框架。目前流行的ORM框架有如下这些产品。 传统的Entity EJB: Hibernate, IBATIS: Oracle的TopLink: OJB: JPA(Java Persistence API),3 Hibernate项目简介,什么是Hibernate?,Hibernate之父:Gavin King JBoss核心成员之一 EJB3.0专家委员会成员 Hibernate In Action作者 2001年开始开发Hibernate 2003年Hibernate发展为Java 世界主流持久层框架 充满激情 脾气倔强 永不言败,3.1 Hibernate的传奇经历,为了解决ORM的问题,Sun公司首先推出了Entity EJB的解决方案,这是一种优秀的、但备受争议的解决方案主要问题是EJB的开发相当繁琐,而且需要EJB容器支持,这都影响了Entity EJB的实际应用。后来Sun公司又推出了JDO规范,但因为各厂商之间的实现又互不相同,故也未得到广泛应用。 在这一时期,iBATIS和Apache组织下的另一个持久层框架,在许多J2EE应用中大展拳脚,但iBATIS并不是真正的O/R Mapping,它仅仅停留在SQL Mapping映射阶段并未让开发者能完全运行面向对象的种种优势。在这种背景下,Java开发界在等待一种成熟的O/R Mapping解决方案,它应该具有简单易用的特性,最好能开源免费,而且无须任何容器支持。在这样的情形下,Hibernate应运而生,于是Hibernate迅速在J2EE开发领域流行开来。,3.2 为什么要选择Hibernate,Hibernate能在众多的ORM框架中脱颖而出,因为Hibernate与其他ORM框架对比具有如下优势: 开源和免费的License,方便需要时研究源代码、改写源代码、进行功能定制。 轻量级封装,避免引入过多复杂的问题,调试容易,可减轻程序员负担。 具有可扩展性,API开放。功能不够用时,可自己编码进行扩展。 开发者活跃,产品有稳定的发展保障。Hibernate的工作方式 灵巧的设计,出色的性能表现 目前Hibernate在国内的开发人员相当多,Hibernate的文档非常丰富,这些都为学习Hibernate铺平了道路,因而Hibernate的学习相对简单一些。,小结,前几节内容先由Java访问数据库谈起,由于面向对象的开发语言与关系型数据库的设计差异,引出了持久化层和ORM工具的概念,而Hibernate正是ORM框架的佼佼者。因为有了Hibernate的支持,使得J2EE应用的OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程),三个过程一脉相承,成为一个整体。,4. Hibernate的优点,Hibernate采用XML文件来配置对象-关系映射,这样做的优点体现在: Hibernate既不会渗透到上层模型中,也不会渗透到下层数据模型中。 开发人员可以独立设计域模型,不必强迫遵守任何规范。 数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。 对象-关系映射不依赖于任何程序代码,如果需要修改对象-关系映射,只需要修改XML文件,不需要修改代码,提高了软件的灵活性,并且使维护更加方便。 使用Hibernate数据持久层JDBC操作数据库相比,有以下两点优势: 减少访问数据库的频率。应用程序从内存中读取持久化对象的速度,比到数据库中查询数据的速度快多了,因此Session的缓存可以提高数据访问的性能。 保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生变化时,Session不会立即执行SQL语句,而是重新获取一遍数据。Session能够把几条相关的SQL语句合并为一条SQL语句,以减少访问数据库的次数,从而提高应用程序的性能。,5. Hibernate的下载,下载Hibernate的网站是,下面简单介绍一下hibernate中的几个选项: Hibernate core:这就是常说的Hibernate,它提供了ORM,可以帮助开发人员节省持久层的编码时间。 Hibernate Annotation:提供了JDK代码的标注功能,使用它可以减少描述符、编译器校验,还可以减少配置和维护等工作。 Hibernate EntityManager:它以Hibernate的方式,实现J2EE标准中的Java持久化编程接口(JPA)。 Hibernate Validator:一个验证框架,可以独立使用。 Hibernate Search:Hibernate与Lucene相结合的一个Java全文搜索引擎。有了它可以轻易地为Java应用程序加入全文搜索功能。 Hibernate shards:通过Hibernate在多重数据库上提供一个统一的视图。 Hibernate tools:提供的一些Eclipse插件和Ant工具。,6. Hibernate的安装,Hibernate的安装非常简单,它不依赖于任何框架或组件,所以在使用时,直接将它的jar文件加载到项目的classPath中就可以。 解压后的目录结构如下图所示:,7 安装MySQL数据库,MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。其体积小、速度快而且它是免费并且开源的。对于一般的个人使用者和中小型企业来说,MySQL提供的功能和性能已经绰绰有余,尤其适合初学者学习使用。本书与数据库相关的实例都是基于MySQL数据库的。,7.1 下载MySql,MySQL的下载地址:http:/dev.MySQL.com/downloads/目前发布的最新版本为MySQL6.0,选择windows平台,最简单的安装方式Setup.exe下载。下载页面如图所示。,7.2 安装MySQL,MySQL的安装十分简单,下载解压之后是一个独立的setup.exe文件,直接运行安装。与一般的软件安装有点不同,只有在选择Custom模式安装才可以改变安装路径,其他选项都选择默认选项。,7.3 配置MySQL,从MySQL5.0版本开始,MySQL增加了许多高级功能,所以附带了一个配置向导。,7.4 MySQL的常用命令,数据库的相关知识超出了本课的范畴,详细情况请参考MySQL自带的说明文档。在实际应用中可能会使用一些MySQL的客户端工具替代命令行来操作数据库,可以提高效率,比如:MySQL-Front和navicat。MySQL-Front和navicat的界面图所示,7.5 下载MySQL的JDBC驱动,前面的内容中曾做过介绍,访问不同的数据需要下载不同的JDBC,JDBC驱动程序往往是由数据库厂商提供的。推荐使用MySQL的网站提供的是MySQL的官方驱动。

温馨提示

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

评论

0/150

提交评论