Hibernate组件框架.ppt
《Hibernate组件框架.ppt》由会员分享,可在线阅读,更多相关《Hibernate组件框架.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Hibernate组件框架组件框架Hibernate?u直接使用JDBC操作数据库的步骤很繁琐uJDBC操作的是关系型数据库u我们用JAVA开发程序,则使用面向对象的思想uHibernate正是在这两种不同的模型之间建立关联,Hibernate给我们提供了利用面向对象的思想来操作关系型数据的接口什么是关系模型(Relational Model)?u 关系模型把世界看作是由实体(Entity)和联系(Relationship)构成的。 u 所谓实体就是指现实世界中具有区分与其它事物的特征或属性并与其它实体有联系的对象。在关系模型中实体通常是以表的形式来表现的。表的每一行描述实体的一个实例,表的每
2、一列描述实体的一个特征或属性。 u 所谓联系就是指实体之间的关系,即实体之间的对应关系。 1:1 1:n m:n u 关系数据库 表 字段 主键 外键什么是面向对象?u 面向对象三大特征:封装、继承(一般与特殊)、多态(覆盖与重载)u 类u 对象u 属性u 关系 一般与特殊关系(is a) 组成(has a) 关联及其多重性 1:1 1:n m:n 双向关联与单向关联对象关系映射(Object Relational Mapping,简称ORM) u ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的
3、对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 u Why ORM? 面向对象的开发方法是当今企业级应用开发环境中的主流开发方法 关系数据库是企业级应用环境中永久存放数据的主流数据存储系统 u 字母O起源于“对象”(Object),而R则来自于“关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和呈现层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 u 当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等
4、。而这些代码写起来总是重复的。 Hibernate是一个优秀的持久化框架 什么是持久化?内存内存姓名:小颖姓名:小颖性别:女性别:女特长:英语、程序设计特长:英语、程序设计瞬时状态瞬时状态磁盘磁盘持久状态持久状态用用JDBC完成数据在持久和瞬时状完成数据在持久和瞬时状态间的转换态间的转换:stmt.execute ( ).瞬时状态:瞬时状态:保存在内存的程序数据,程序退出保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态后,数据就消失了,称为瞬时状态持久状态:持久状态:保存在磁盘上的程序数据,程序退保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持出后依然存在,称为程序数据
5、的持久状态久状态持久化:持久化:将程序数据在瞬时状态和持久状态将程序数据在瞬时状态和持久状态之间转换的机制之间转换的机制持久化持久化Hibernate是一个主流的ORM框架 什么是ORM?对象数据(对象数据( )name:小颖:小颖sex:女:女skill:英语、程序设计:英语、程序设计User对象对象持久化层持久化层业务逻辑层业务逻辑层表现层表现层数据库数据库TBL_User表表关系型数据关系型数据( ) 映射信息映射信息ORM(对象(对象-关系映射):关系映射):完成对象数据到关系型数据映射的完成对象数据到关系型数据映射的机制称为对象机制称为对象-关系映射,简称关系映射,简称ORM。什么是
6、Hibernate?u 对象/关系映射一直都是数据库技术中的难点,尽管人们提出了许多方案解决这个问题,但都不能完全做到即便利又高效。EJB的推出让人们看到了希望,但实践证明实体Bean的效率并不高,并且还十分难于为初学者理解。由Gavin King创建的Hibernate框架,从某种程序上正在朝着正确的方向迈走,并且得到越来越多IT从业人员的认可。就像当年的Struts框架一样,Hibernate也已经在许多项目中得到广泛应用。Hibernate由于投注了更多的精力在提升效率上,使用起来又十分方便,新版的EJB规范正在向Hibernate方向靠拢。正是由于得到广泛的认可,Hibernate已经
7、成为程序员必须掌握的技术之一。Hibernate能做什么? - 理解O/R映射u Hibernate能帮助我们利用面向对象面向对象的思想,开发基于关系型基于关系型数据库数据库的应用程序第一:将对象数据保存到数据库第二:将数据库数据读入对象中u 基于B/S的典型三层架构关于分层关于分层 业务逻辑层和持久化层绝对不能依赖于展现层持久化与持久层什么是持久化?什么是持久化?将数据保存到物理的储存器(硬盘、磁带等)上的过程叫持久化。 什么是持久层?什么是持久层?专门负责处理与物理数据相关操作(持久化数据,以供日后使用)的独立层次。 “持久化持久化”与与“持久层持久层”之间的关系?之间的关系?持久化是动词
8、,表示将内存中的数据存储到数据库或其他媒介。持久层是名词,实现数据持久化的一个相对独立的领域(层),将数据使用者与数据实体相分离。问题:问题:上图中哪些具有持久化过程?哪些具有持久层?问题:问题:上图中哪些具有持久化过程?哪些具有持久层?问题:问题:上图中哪些具有持久化过程?哪些具有持久层?问题:问题:上图中哪些具有持久化过程?哪些具有持久层?持久层与MVC持久层解决了什么问题?持久层解决了什么问题?当发生以下三种情况的时候,数据持久化代码不需要重新编译(1)表示层发生变化(2)业务逻辑层发生变化(3)底层数据格式或持久化机制发生变化Hibernate与O、R之间的关系使用Hibernate实
9、现用户添加 使用Hibernate的7个步骤: 使用Hibernate实现用户添加 七个步骤对应的程序代码public static void main(String args) Configuration conf = new Configuration().configure();/1、读取配置文件、读取配置文件 SessionFactory sf = conf.buildSessionFactory();/ 2、创建、创建SessionFactory Session session = sf.openSession();/ 3、打开、打开Session Transaction tx =
10、null; try tx = session.beginTransaction();/ 4、开始一个事务、开始一个事务 / 5、持久化操作、持久化操作 User user = new User(); user.setUname(Hibernate user); user.setUpass(password); session.save(user); mit();/ 6、 提交事务提交事务 catch(Exception e) if (null!=tx)tx.rollback(); e.printStackTrace(); finally session.close();/ 7、关闭、关闭Ses
11、sion 执行结果执行结果Hibernate执行过程Configuration SessionFactory SessionTransaction创建创建创建创建开始开始save delete update get mit() session.close()执行执行Hibernate.cfg.xmlFWXX.cfg.xmlUser.hbm.xml结束结束创建和销毁都相当耗费创建和销毁都相当耗费资源,通常一个系统内资源,通常一个系统内一个数据库只创建一个一个数据库只创建一个类似于类似于JDBC中的中的Connection 复杂的查询操作稍后介绍复杂的查询操作稍后介绍 使用Hibernate实现数
12、据的加载/删除/修改 程序代码Session session = sf.openSession();User user = (User)session.get(User.class, id);session.close();System.out.println(user.getUname() + , + user.getUpass();根据主键加载根据主键加载tx = session.beginTransaction();User user = this.testLoad(id);user.setUname(new Name);session.update(user);mit();修改修改tx
13、 = session.beginTransaction();User user = this.testLoad(id);session.delete(user);mit();删除删除没有更新数据,没有更新数据,不进行事务控不进行事务控制制先加载,再更新先加载,再更新不再需要繁琐的逐字不再需要繁琐的逐字段编码段编码先加载,先加载,再删除再删除演示示例:演示示例:HibTest2.javaHibernate的配置文件(hibernate.properties) hibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.connect
14、ion.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql:/localhost:3306/SAMPLEDB hibernate.connection.username=roothibernate.connection.password=1234hibernate.show_sql=trueHibernate配置文件的属性创建持久化类Customer持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。 持久化类有一个id属性,用来惟一标识Customer类
15、的每个对象。在面向对象术语中,这个id属性被称为对象标识符(OID,Object Identifier),通常它都用整数表示 Hibernate要求持久化类必须提供一个不带参数的默认构造方法 创建数据库Schema create table CUSTOMERS ( ID bigint not null primary key, NAME varchar(15) not null, EMAIL varchar(128) not null, PASSWORD varchar(8) not null, PHONE int , ADDRESS varchar(255), SEX char(1) , I
16、S_MARRIED bit, DESCRIPTION text, IMAGE blob, BIRTHDAY date, REGISTERED_TIME timestamp);blob (二进制大数据)binary large object创建对象-关系映射文件Customer.hbm.xml 元素映射OID子元素用来设定标识符生成器。Hibernate提供了提供了多种内置的实现。 MySQL中:ID bigint auto_increment primary key元素映射值类型属性 name属性:指定持久化类的属性的名字。 column属性:指定与类的属性映射的表的字段名。 type属性:指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 组件 框架
限制150内