hibernate的简介

上传人:xuey****n398 文档编号:244833791 上传时间:2024-10-06 格式:PPT 页数:31 大小:1.92MB
返回 下载 相关 举报
hibernate的简介_第1页
第1页 / 共31页
hibernate的简介_第2页
第2页 / 共31页
hibernate的简介_第3页
第3页 / 共31页
点击查看更多>>
资源描述
*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Softeem Consultancy Service,Click Here,第一章,Hibernate入门,预习检查,为什么需要Hibernate?,Hibernate是什么?,使用Hibernate的步骤是?,本章任务,了解Hibernate基本原理,学会编写实体映射文件,学会使用Hibernate完成数据增、删、改操作,学会在项目中使用Hibernate,一级缓存与二级缓存,为什么使用Hibernate?,在编写DAO层代码时,容易出现哪些问题?,思考:这部分代码规律性很强,是否可以采用“通用”的方法“集中”解决?,代码繁琐,容易出错,纯“体力”劳动,工作量大,占用大量开发时间,public,void,insert(HouseDTO dto),try,PreparedStatement ps=,con,.prepareStatement(,insert into house values(?,?,?,?,?,?,?,?,?,?,?),);,ps.setString(1,dto.getTitle();,/出租标题,ps.setFloat(2,dto.getHireprice();,/租金,ps.setDate(3,new,java.sql.Date(dto.getBooktime().getTime();,/登记日期,ps.setString(4,dto.getLinkman();,/联系人,ps.setString(5,dto.getLinktel();,ps.setString(6,dto.getHousething();,/房屋设施,ps.setInt(7,dto.getRoom();,ps.setInt(8,dto.getTing();,ps.setInt(9,dto.getUid();,ps.setInt(10,dto.getSid();,ps.setInt(11,dto.getAid();,ps.execute();,catch,(SQLException e),e.printStackTrace();,public,void,edit(HouseDTO dto),try,PreparedStatement ps=,con,.prepareStatement(,update house set title=?,hireprice=?,linkman=?,linktel=?,housething=?,room=?,ting=?,sid=?,aid=?where hid=?,);,ps.setString(1,dto.getTitle();,/出租标题,ps.setFloat(2,dto.getHireprice();,/租金,ps.setString(3,dto.getLinkman();,/联系人,ps.setString(4,dto.getLinktel();,ps.setString(5,dto.getHousething();,/房屋设施,ps.setInt(6,dto.getRoom();,ps.setInt(7,dto.getTing();,ps.setInt(8,dto.getSid();,ps.setInt(9,dto.getAid();,ps.setInt(10,dto.getHid();,ps.execute();,catch,(SQLException e),e.printStackTrace();,public,HouseDTO findById(String id),HouseDTO dto=,new,HouseDTO();,try,PreparedStatement ps=,con,.prepareStatement(,select*from house where hid=?,);,ps.setString(1,id);,ResultSet rs=ps.executeQuery();,if,(rs.next(),dto.setHid(rs.getInt(,hid,);,/房屋编号,dto.setTitle(rs.getString(,title,);,dto.setHireprice(rs.getFloat(,hireprice,);,/租金,dto.setBooktime(rs.getDate(,booktime,);,/登记日期,dto.setLinkman(rs.getString(,linkman,);,/联系人,dto.setRoom(rs.getInt(,room,);,/室,dto.setSid(rs.getInt(,sid,);,/街道,dto.setAid(rs.getInt(,aid,);,/区域,catch,(SQLException e),e.printStackTrace();,return,dto;,为什么使用Hibernate?,使用Hibernate后的DAO层代码:,代码精简易读,封装了JDBC操作,以面向对象的方式操作数据,开发工作量小,可以,集中,精力,处理,业务逻辑,public class HouseDAOHibImpl,extends BaseHibernateDAO,implements IHouseDAO,public House get(int id),super.get(,House.class,id);,public void add(House house),super.add(house);,public void del(int id),super.del,(House.class,id);,public void update(House house),super.update(house);,Hibernate就是用来解决这些问题的!,为什么使用Hibernate?,屏蔽数据库之间的差异性,Hibernate,JDBC,JNDI,文本,JTA,数据库类型,访问方式,Hibernate是什么?,Hibernate之父:Gavin King,JBoss核心成员之一,EJB3.0专家委员会成员,Hibernate In Action作者,2001年开始开发Hibernate,2003年Hibernate发展为Java世界主流持久层框架,充满激情,脾气倔强,永不言败,基于关系数据库的持久层可选方案,基于关系数据库的持久层可选方案,一个优秀的持久化框架,什么是持久化?,内存,姓名:小颖,性别:女,特长:英语、程序设计,瞬时状态,磁盘,持久状态,用JDBC完成数据在,瞬时,和,持久,状态间的转换:,stmt.execute(),.,瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态,持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态,持久化:,将程序数据在瞬时状态和持久状态之间转换的机制,持久化,一个主流的ORM产品,什么是ORM?,对象数据(,O,),name:小颖,sex:女,skill:英语、程序设计,User对象,持久化层,业务逻辑层,表现层,数据库层,tbl_user表,关系型数据(,R,),tbl_user表记录,映射信息,(,M,),ORM(对象-关系映射):,完成对象数据到关系型数据映射的机制称为对象-关系映射,简称ORM。,如何使用Hibernate?,使用 Hibernate 的“3个准备,7个步骤”,如何使用Hibernate?,使用 的3个准备:,1.导入Hibernate库(jar包),3.添加对应表的实体类和映射文件,jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=crm;SelectMethod=cursor,sa,123,true,配置数据源,数据库“方言”,运行时在控制台显示SQL语句,映射文件,可以有多个,package com.softeem.entity;,public class User,private Integer uid;,private String uname;,private String upass;,public User(),/默认构造方法,/Getter and setter,准备3:添加实体类和映射文件(User.hbm.xml),实现Serializable接口,添加默认构造方法,实体类到表的映射,主键,属性到字段的映射,主键生成器:,native 由数据库生成,assigned 在程序中指定,如何使用Hibernate?,使用Hibernate的7个步骤:,7、,关闭Session,6、,提交事务,5、,持久化操作,save/update/delete/get,4、,开始一个事务,3、,打开,Session,1、,Configuration,2、,创建,SessionFactory,七个步骤对应的程序代码,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=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、关闭Session,执行结果,Configuration,SessionFactory,Session,Transaction,创建,创建,开始,save delete update get,mit(),session.close(),执行,House.cfg.xml,User.hbm.xml,结束,创建和销毁都相当耗费资源,通常一个系统内一个数据库只创建一个,类似于JDBC中的,Connection,查询操作稍后介绍,Hibernate执行过程,程序代码,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=,(User)session.load(User.class,id);,user.setUname(new Name);,session.update(user);,mit();,修改,tx=session.beginTransaction();,User user=,(User)session.load(User.class,id);,session.delete(user);,mit();,删除,没有更新数据,不需进行事务控制,先加载,再更新,先加载,再删除,使用Hibernate实现数据的加载/删除/修改,程序代码,Session,session=sf.openSession();,Query,query=session.createQuery(“,from Use
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!