为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第4章 HIBERNATE

2019-04-20 18页 doc 53KB 2阅读

用户头像

is_431304

暂无简介

举报
第4章 HIBERNATE第4章 HIBERNATE实现 Hibernate有冬眠和蛰伏的意思。存储在硬盘上的数据一般有三种形式:文件、数据库和对象,当这些数据读入内存时要有相应的内存数据结构。当面向对象编程方法普遍流行以后,人们发现以非对象形式存储在外存的数据与编程中使用的数据对象之间有很大的差异,为了弥补这种差异需要做大量的转换工作。为了方便数据应用中的这种转换要求,人们开发出了各种中间件产品,简化程序开发过程中对数据维护和操作的工作量。 通常把对象和关系数据库间的转换关系称作对象关系映射,即ORM。常用的O/R映射框架有:Hibernate、Ap...
第4章 HIBERNATE
第4章 HIBERNATE实现 Hibernate有冬眠和蛰伏的意思。存储在硬盘上的数据一般有三种形式:文件、数据库和对象,当这些数据读入内存时要有相应的内存数据结构。当面向对象编程方法普遍流行以后,人们发现以非对象形式存储在外存的数据与编程中使用的数据对象之间有很大的差异,为了弥补这种差异需要做大量的转换工作。为了方便数据应用中的这种转换要求,人们开发出了各种中间件产品,简化程序开发过程中对数据维护和操作的工作量。 通常把对象和关系数据库间的转换关系称作对象关系映射,即ORM。常用的O/R映射框架有:Hibernate、Apache OJB、JDO(是SUN提出的一套—Java数据对象)、Toplink(Orocle公司的)、EJB(2.0X中有CMP;3.0X提出了一套“Java持久化API”---JPA)和IBatis(非常的轻量级,对JDBC做了一个非常非常轻量级的包装,严格说不是O/R映射框架,而是基于SQL的映射(提供了一套配置文件,把SQL语句配置到文件中,再配置一个对象进去,只要访问配置文件时,就可得到对象))等。 4.1 介绍 ORM(Object Relational Mapping)---是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。 Hibernate的创始人Gavin King指出了Hibernate能做什么:就是将对象模型(实体类)的东西存入关系模型中;实体中类对应关系型库中的一个表;实体类中的一个属性会对应关系型数据库表中的一个列;实体类的一个实例会对应关系型数据库表中的一条。即将对象数据保存到数据库、将数据库数据读入到对象中。 所谓的对象关系的阻抗不匹配问题就在面向对象中存在的概念和形式在关系数据库中不存在,或者相反,这就是阻抗不匹配。Hibernate可以解决这个问题,除此之外Hibernate能存在的另一个原因是目前不存在完整的面向对象的数据库(目前都是关系型数据库)。 Hibernate的优缺点包括:1、Hibernate不需要编写的SQL语句(不需要编辑JDBC),只需要操作相应的对象就可以了,就可以能够存储、更新、删除、加载对象,可以提高生产效率;2、因为使用Hibernate只需要操作对象就可以了,所以我们的开发更对象化了;3、使用Hibernate,移植性好(只要使用Hibernate标准开发,更换数据库时,只需要配置相应的配置文件就可以了,不需要做其它任务的操作);4、Hibernate实现了透明持久化:当保存一个对象时,这个对象不需要继承Hibernate中的任何类、实现任何接口,只是个纯粹的单纯对象—称为POJO对象(最纯粹的对象—这个对象没有继承第三方框架的任何类和实现它的任何接口);5、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们一般称为轻量级框架;6、Hibernate代码测试方便。 Hibernate使用范围包括:1、针对某一个对象,简单的将它加载、编辑、修改,且修改只是对单个对象(而不是批量的进行修改),这种情况比较适用;2、对象之间有着很清晰的关系(例:多个用户属于一个组(多对一)、一个组有多个用户(一对多));3、聚集性操作:批量性添加、修改时,不适合使用Hibernate(O/映射框架都不适合使用);4、要求使用数据库中特定的功能时不适合使用,因为Hibernate不使用SQL语句。 Hibernate的重点学习是Hibernate的对象关系映射,这种对象/关系映射模式包括:属性映射;类映射;关联映射等,其中关联映射又包括:一对一;一对多;多对多等映射。 Hibernate核心接口包括:Configuartion、SessionFactory、Session、 Transaction、Query和Criteria等。使用这些接口,可以存储持久化对象或者对事物进行控制。 Configuration类是Hibernate的入口,负责在Hibernate初始化时加载默认文件路径下的配置文件信息(hibernate.properties或hibernate.cfg.xml)到计算机内存,并通过他的对象加载指定的映射文件到内存,最后创建一个SessionFactory对象,把读入的配置信息拷贝SessionFactory对象的缓存中。 SessionFactory负责创建Session实例,每个SessionFactory类的实例对应一个数据库。SessionFactory类的实例是重量级(下面还要讨论“轻量级”的概念,区分他们是根据对象占用缓存的大小)的。因为他占用很大的缓存,用来存放预定义的SQL语句和映射元数据等,所以每个数据库最好只创建一个SessionFactory实例,在初始化时完成。他的线程是安全的,可以被应用的多个线程共享。 Session是Hibernate持久化操作的基础,他负责管理所有与持久化相关的操作,例如数据库的存取、事务的管理和对象的生命周期等。Session和SessionFactory恰恰相反,他不是线程安全的,应避免多个线程共享同一个Session;他是轻量级的,创建和销毁不会浪费太多的资源,可以为每一个请求分配一个Sesion,在每次请求过程中创建和销毁Session实例,减少资源浪费。 Transaction类负责Hibernate的数据库事务。其实Hibernate本身并不具有管理事务的能力,只是对底层事务接口进行了封装,这样做有利于在不同的环境或容器中移植,也可以直接访问底层的事务接口,但那样不利于应用的移植。 Query和Criteria接口负责Hibernate的查询操作。Query实例封装了一个HQL(Hibernate Query Language)查询语句。HQL与SQL有些类似,只是HQL是面向对象的,他操作的是持久化类的类名和该类的属性名,而SQL操作的是表名和字段名。Criteria实例完全封装了字符串形式的查询语句,他比Query实例要面向对象,他更适合与执行动态查询。 4.2 配置 Hibernate的主配置文件 org.hibernate.dialect.MySQLDialect jdbc:mysql://localhost:3309/job root 123456 com.mysql.jdbc.Driver mysql6 true   4.3 映射 1、TCourse.hbm.xml 教师流水号 课程名称 开课学期 课程描述 课程状态 备注信息 课程流水号 课程流水号   2、TCourselist.hbm.xml 学生流水号 课程流水号   3、TJob.hbm.xml 学生证号 作业流水号 作业类型1 作业类型2 作业类型3 作业类型4 作业类型5 完成日期 作业状态 成绩 评阅时间 备注信息   4、TJoblist.hbm.xml 课程流水号 作业题目 作业 要求方法 截止日期 资源列表 作业状态 备注信息 作业流水号   5、TManager.hbm.xml 管理员姓名 登录账户 登录密码   6、TStudent.hbm.xml 年级 班级 院系 专业 姓名 性别 生日 手机 宿舍电话 电子邮件 学生流水号 学生证号   7、TTeacher.hbm.xml 教师姓名 登录账户 登录密码 教师流水号  
/
本文档为【第4章 HIBERNATE】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索