第一章Hibernate入门及基本操作课件.ppt(40页)

上传人(卖家):ziliao2023 文档编号:7972458 上传时间:2024-09-18 格式:PPT 页数:40 大小:1.97MB
下载 相关 举报
第一章Hibernate入门及基本操作课件.ppt(40页)_第1页
第1页 / 共40页
第一章Hibernate入门及基本操作课件.ppt(40页)_第2页
第2页 / 共40页
第一章Hibernate入门及基本操作课件.ppt(40页)_第3页
第3页 / 共40页
第一章Hibernate入门及基本操作课件.ppt(40页)_第4页
第4页 / 共40页
第一章Hibernate入门及基本操作课件.ppt(40页)_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、Hibernate持久化框架持久化框架 课程学习目标v 掌握Hibernate的基本配置v 掌握Hibernate的基本操作v 掌握Hibernate各种关系映射v 掌握Hibernate的HQL查询v 掌握Hibernate的Criteria查询v 掌握各种Hibernate优化技术v 熟悉Hibernate的注解配置v 了解其他持久化技术的基本使用本阶段课程介绍 MVC框架 Struts2.2.x ORM框架 Hibernate3.x Bean管理 Spring2.5主要内容 Hibernate简介 Hibernate的Xml配置方法 ORM概述 Hibernate应用步骤 主键生成机制本

2、讲目标 掌握Hibernate的基本配置方式 理解ORM 掌握Hibernate的基本操作和应用步骤 掌握常用的主键生成机制JDBC的缺点的缺点v 开发效率低v 代码冗余 pstmt的setXX方法 方法参数冗余的getXX方法 如果POJO的属性很多,代码增加v 重复性工作多能否使用对象将能否使用对象将POJO作为参数,简单的完成增删改查操作?作为参数,简单的完成增删改查操作?什么是ORM ORM:Object Relational Mapping(对象-关系映射)可以理解为一种数据持久化技术,其主要是把对象模型,例如JavaBean对象,和关系型数据库的表建立对应关系,并且提供了一个通过J

3、avaBean对象去操作数据库表的机制 ORM优点:ORM在对象模型和关系数据库表之间建立了一座桥梁 程序员就不需要再使用SQL语句操作数据库中的表 直接操作JavaBean对象就可以实现数据的存储、查询、更改和删除等操作。常见的ORM框架 常见的ORM框架 Hibernate iBatis Toplink Cayenne jRelationalFramework Apache OJBHibernate简介 Hibernate是对象/关系映射(ORM)的解决方案 Hibernate是Java应用和关系数据库之间的桥梁,负责将Java对象和关系数据之间的映射。Hibernate的目标是成为Jav

4、a平台管理数据持久性问题的完整解决方案 Hibernate是一个开放源代码的对象关系映射框架,它是对JDBC进行了非常轻量级的对象封装 使Java开发人员更加专注于业务的熟悉和处理,而非对数据库的基本操作,同时也能让开发人员以面向对象的思想来操作数据库。Hibernate简介简介v Hibernate作者Gavin King Hibernate创始人 Hibernate in action 作者 EJB 3.0的Entity bean specification的实际领导人(sun任命的领导人是Linda DeMichiel)参加了XDoclet和Middlegen的开发 2003年9月加入J

5、Boss,全职进行Hibernate开发v Hibernate 一个开发源代码的对象关系映射框架 对JDBC进行了非常轻量级的对象封装 将JavaBean对象和数据库的表建立对应关系Hibernate简介 Hibernate资源下载 http:/www.hibernate.org 最新版本为4.2.7 最新稳定版本为4.2.3 但使用最多最稳定的还是3.1.3Hibernate优势优势v Hibernate 是一个优秀的Java 持久化层解决方案v 是当今主流的对象关系映射工具v Hibernate 简化了JDBC 繁琐的编码v Hibernate 将数据库的连接信息都存放在配置文件中Sess

6、ion session=HiberanteUtil.getSession();Query query=session.createQuery(from User);List users=(List)query.list();Hibernate配置文件配置文件v hibernate.cfg.xml文件v 映射文件的配置(*.hbm.xml)org.hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:10.0.0.188:1521:ORCLjbitbdqn oracle.jdbc.driver.OracleDriver数据库数据库URL数据库用户名数

7、据库用户名数据库密码数据库密码数据库驱动数据库驱动使用的不同数据库类型使用的不同数据库类型hibernate.cfg.xml文件文件 User.hbm.xml文件文件第一个Hibernate项目 搭建一个Hibernate应用需要以下步骤:步骤一、新建一个Java项目或者web项目 步骤二、为新建项目添加Hibernate支持 添加需要的jar文件 Hibernate3.jar required/*.jar 在classpath下加入hibernate.cfg.xml第一个Hibernate项目 步骤三、配置hibernate.cfg.xml 为Hibernate指定数据库驱动类名 为Hibe

8、rnate指定数据库URL 为Hibernate指定数据库用户名 为Hibernate指定数据库用户口令 为Hibernate指定数据库方言第一个Hibernate应用 步骤四、创建一个实体类Student 创建Student类 提供getter和setter方法第一个Hibernate应用 步骤五、创建Student.hbm.xml映射文件 为Student创建映射文件 映射文件的命名规则为实体类名.hbm.xml第一个Hibernate应用 步骤五、将Student.hbm.xml映射文件配置到hibernate.cfg.xml文件中 步骤六、测试应用。持久化与持久化与ORMv 持久化 将

9、程序中数据在瞬时状态和持久状态间转换的机制持久化与持久化与ORMv 持久化层 JDBC 就是一种持久化机制 将程序数据直接保存成文本文件也是持久化机制的一种实现 在分层结构中,DAO 层(数据访问层)也被称为持久化层v 持久化完成的操作 将对象保存到关系型数据库中 将关系型数据库中的数据读取出来以对象的形式封装持久化与持久化与ORMv ORM(Object Relational Mapping,对象关系映射)编写程序的时候,以面向对象的方式处理数据 保存数据的时候,却以关系型数据库的方式存储v ORM解决方案包含下面四个部分 在持久化对象上执行基本增、删、改、查操作的API 用于对持久化对象或

10、属性查询的一种语言或者API 用于实体关系映射的工具 能够与事务对象交互、执行检查、延迟加载以及其他优化功能持久化与持久化与ORMv 持久化 将程序中数据在瞬时状态和持久状态间转换的机制Hibernate对象的三种状态 通过session对实体对象进行CRUD操作之后,该实体对象可能会经历三种状态的转换 Transient:瞬时状态(瞬态)没有进行持久化,也没有与任何session关联 Persistent:持久化状态 同一个session进行了关联 Detached:托管状态(游离态)已经持久化,但是没有和session进行关联实体映射配置 Hibernate内置类型映射Hibernate类

11、型Java类型SQL类型 int/integer int/Integer integer long long/Long bigint short short/Short smallint byte byte/Byte tinyint float float/Float float double double/Double double big_decimal java.math.BigDecimal NUMERIC character char/Character char(1)string java.lang.String varchar(255)boolean boolean/Boolea

12、n bit yes_no boolean/Boolean bit true_false boolean/Boolean bit实体映射配置 Hibernate内置类型映射Hibernate类型Java类型SQL类型 date java.util.Date或者java.sql.Date date time java.util.Date或者java.sql.Time time timestamp java.sql.Timestamp timestamp calendar java.util.Calendar timestamp calendar_date java.util.Calendar da

13、teId生成策略 Id生成策略也叫主键生成策略 以下说明基于hbm.xml的主键生成策略 Id生成策略 在Hibernate的映射文件中通过指定Generator,来定义主键的生成方式,Hibernate中可以定义的主键生成方式有:生成器类型名说明备注increment用于long、short、int类型唯一标识,只有在没有其他进程往同一张表中插入数据时才能使用在集群中不可使用identityMySQL、SQLServer支持的数据库主键生成方式sequenceOracle数据库支持的主键生成方式native主键的生成方式由数据库平台决定,如Oracle使用sequence,MySQL使用au

14、to_increment跨数据库平台hilo使用高地位算法获取主键uuid使用uuid算法生成主键guid使用guid算法生成主键联合主键的映射方式 极少数情况下,开发人员可能会遇见联合主键的应用,联合主键可以使用如下语法在hbm.xml中定义联合主键映射方式 在实体中可以以组件的形式来映射数据库中的联合主键 组件类,必须实现java.io.Serializable接口,同时要重写equals和hasCode方法Hibernate核心API org.hibernate.cfg.Configuration 顾名思义,Configuration负责管理Hibernate的配置信息,其中包括一些关键

15、的属性如:数据库连接URL-hibernate.connetion.url 数据库驱动程序类名-hibernate.connection.driver_class 数据库用户名-hibernate.connection.username 数据库用户口令-hibernate.connection.password 数据库方言-hibernate.dialect 使用Hibernate,必须提供以上基本的信息用于对特定数据库的支持,已完成初始化工作。Hibernate核心API org.hibernate.cfg.Configuration 在应用中,需要使用Configuration的confi

16、gure()搜寻并加载hibernate.cfg.xml,为后续操作提供基本配置 通过Configuration对象调用buildSessionFactory()返回一个SessionFactory对象 由于配置信息已经由Hibernate 维护并绑定,在返回的SessionFactory之上,因此一般情况下无需再对其进行操作Hibernate核心API org.hibernate.SessionFactory SessionFactory 负责创建Session 实例。我们可以通过Configuration 实例构建SessionFactory Configuration实例config会根

17、据当前的配置信息,构造SessionFactory实例并返回。SessionFactory 一旦构造完毕,即被赋予特定的配置信息Hibernate核心API org.hibernate.Session Session是持久层操作的基础,相当于JDBC中的Connection Session的生命周期是以事务的开始和结束来界定的 Session完成的主要功能就是提供对实体对象的CRUD操作 如将对应的实体对象保存至数据库 save(Object o)如将数据从数据库中查询出来load()和get()等 如将数据从数据库中删除的方法delete()等Session API方法说明 save(Obj

18、ect o)将对象进行持久化操作 delete(Object o)删除该实例对应的数据库记录 update(Object o)更新指定对象对应的数据库记录 saveOrUpload(Object o)更新或者新增一条记录 get(Class clazz,Serializable id)根据指定id获取一条数据库记录load(Class clazz,Serializable id)根据指定id加载一条数据库记录 flush()强制刷新缓冲区 clear()强制清空缓冲区使用Hibernate Hibernate 操作数据库 使用Hibernate操作数据库需要七个步骤(1)读取并解析配置文件(2

19、)读取并解析映射信息,创建SessionFactory(3)打开Session(4)开始一个事务(增删改操作必须,查询操作可选)Configuration conf=newConfiguration().configure();SessionFactory sf=conf.buildSessionFactory();Session session=sf.openSession();Transaction tx=session.beginTransaction();使用Hibernate Hibernate 操作数据库 使用Hibernate操作数据库需要七个步骤(5)数据库操作(6)提交事务(

20、回滚事务)(7)关闭sessionsession.save(user);/或其它操作或其它操作mit();(tx.rollback();)session.close();如果如果Hibernate 配置文件中配置文件中,current_session_context_class 参数参数设置为设置为thread 并采用并采用SessionFactory 的的getCurrentSession()方法方法获的获的Session 实例则不需要此步实例则不需要此步使用HibernateHibernate实现增加用户Configuration conf=null;SessionFactory sess

21、ionFactory=null;Session session=null;Transaction tx=null;try conf=new Configuration().configure();sessionFactory=conf.buildSessionFactory();session=sessionFactory.openSession();tx=session.beginTransaction();session.save(user);mit();catch(HibernateException e)tx.rollback();e.printStackTrace();finally

22、 session.close();sessionFactory.close();1.读取配置文件读取配置文件2.创建创建SessionFactory3.打开打开session4.开始一个事务开始一个事务5.持久化操作持久化操作6.提交事务提交事务6.回滚事务回滚事务7.关闭关闭session使用HibernateHibernate实现用户的修改、删除Configuration conf=null;SessionFactory sessionFactory=null;Session session=null;Transaction tx=null;try conf=new Configurati

23、on().configure();sessionFactory=conf.buildSessionFactory();session=sessionFactory.openSession();tx=session.beginTransaction();session.update(user);mit();catch(HibernateException e)tx.rollback();e.printStackTrace();finally session.close();sessionFactory.close();修改用户修改用户信息修改用户信息Configuration conf=null

24、;SessionFactory sessionFactory=null;Session session=null;Transaction tx=null;try conf=new Configuration().configure();sessionFactory=conf.buildSessionFactory();session=sessionFactory.openSession();tx=session.beginTransaction();session.delete(user);mit();catch(HibernateException e)tx.rollback();e.pri

25、ntStackTrace();finally session.close();sessionFactory.close();删除用户删除用户删除用户信息删除用户信息增、删、改操作一定要在事务环境中完成增、删、改操作一定要在事务环境中完成修改、删除数据时,需要先加载数据修改、删除数据时,需要先加载数据使用HibernateHibernate实现查询操作 Session提供了两种方法加载数据 Object get(Class clazz,Serializable id):通过实体类Class对象和ID 加载数据 Object load(Class theClass,Serializable id)

26、:通过实体类Class对象和ID加载数据 两种方法加载数据的区别 使用get 方法加载数据时,如果数据不存在,返回null对象 使用load 方法加载数据时,如果数据不存在,系统就会抛出异常Configuration conf=null;SessionFactory sessionFactory=null;Session session=null;Transaction tx=null;try conf=new Configuration().configure();sessionFactory=conf.buildSessionFactory();session=sessionFactory

27、.openSession();session.get(User.class,1001);catch(HibernateException e)e.printStackTrace();finally session.close();sessionFactory.close();使用使用get方式加载数据方式加载数据Configuration conf=null;SessionFactory sessionFactory=null;Session session=null;Transaction tx=null;try conf=new Configuration().configure();se

28、ssionFactory=conf.buildSessionFactory();session=sessionFactory.openSession();session.load(User.class,1002);catch(HibernateException e)e.printStackTrace();finally session.close();sessionFactory.close();使用使用load方式加载数据方式加载数据总结 ORM概念 Hibernate的作用及基本配置方法 Hibernate映射文件中ID生成机制是什么?Hibernate应用的七大步骤作业 根据HelloWorld实例完成如下作业:在Mysql数据库中创建一个用户表拥有如下字段:Id int类型 主键自动增长 userName varchar类型 非空 唯一约束 Password varchar类型 非空 使用Hibernate实现验证登陆过程 完成Hibernate实现用户注册

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第一章Hibernate入门及基本操作课件.ppt(40页))为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|