收藏 分销(赏)

hibernate.pptx

上传人:w****g 文档编号:4607061 上传时间:2024-10-06 格式:PPTX 页数:17 大小:232.70KB 下载积分:8 金币
下载 相关 举报
hibernate.pptx_第1页
第1页 / 共17页
hibernate.pptx_第2页
第2页 / 共17页


点击查看更多>>
资源描述
HibernateHibernate什么是什么是hibernatehibernatevHibernate是目前最流行的持久层框架vHibernate是一款面向对象的轻量级的O/R mapping框架vHibernate真正的实现了开发者采用面向对象的方式来操作关系数据库什么是什么是ORMORMv对象关系映射(Object-Relational-Mapping,简称 ORM)是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术;v简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 java 程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。HibernateHibernate的优点的优点v对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代 码。vHibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他 很大程度的简化 DAO 层的编码工作vHibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。vHibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它 支持各种关系数据库,从一对一到多对多的各种复杂关系。ORM工具实现持久化示意图 HibernateHibernate的五个核心接口的五个核心接口vConfiguration Configuration 接口:接口:配置 Hibernate,根据其启动 hibernate,创建SessionFactory 对象;vSessionFactory SessionFactory 接口接口:初始化 Hibernate,充当数据存储源的代理,创建 session 对象sessionFactory 是线程安全的,意味着它的同一个实例可以被应 用的多个线程共享,是重量级、二级缓存;vSession Session 接口:接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个 session,是轻量级、一级缓存;vTransaction Transaction 接口:接口:管理事务;vQuery Query 和和 Criteria Criteria 接口:接口:执行数据库的查询。HibernateHibernate项目的组成项目的组成v实体类:用于封装对象,必须含有一个无参的构造v数据库表:用于存储数据vXXX.hbm.xml:用于O/R 映射的配置vhibernate.cfg.xml:用于配置hibernate的基本设置和配置XXX.hbm.xmlv相关jar包:hibernate、数据库等jar包hibernate.cfg.xmlhibernate.cfg.xmlvvvv v com.mysql.jdbc.Driverv jdbc:mysql:/localhost:3306/testv rootv rootv 1 连接池 v org.hibernate.dialect.MySQLDialect v SQL 方言v true 是否显示sql语句v v vXXX.hbm.xmlvvvv v v v v v v vHibernateHibernate的工作原理(的工作原理(1 1)v启动 Hibernate 构建 Configuration 实例,初始化该实例中的所有变量 Configuration cfg=new Configuration().configure();v加载 hibernate.cfg.xml 文件至该实例内存,通过 hibernate.xfg.xml 文件中 的 mapping 节点配置,加载 hbm.xml 文件至该实例内存;v由上面得到的 Configuration 实例构建一个 SessionFactory实例 SessionFactory sf=cfg.buildSessionFactory();v由上面得到的 SessionFactory 实例创建连接 Session s=sf.openSession();HibernateHibernate的工作原理(的工作原理(2 2)v由上面得到的 Session 实例创建事务操作接口 Transaction 的一个实例 tx Transaction tx=s.beginTransaction();v通过 Session 接口提供的各种方法操作数据库的访问v提交数据库的操作结果 mit();v关闭 Session 链接 s.close();hibernate 编程七步曲(1)v()Configuration config=new Configuration()v根据默认的位置hibernate的配置文件,创建一个configuration对象,v如果不想使用默认的文件,那么需要调用config对象的有参构造,来指定配置文件的位置。v()SessionFactory factory=config.configure().buildSessionFactory();v调用它的configure()方法来解析hibernate.cfg.xml配置文件。然后通过解析这个文件来建立与特定数据的连接。并且从里面的mapping-resource 里面配置的文件,来进行关系影射。hibernate 编程七步曲(2)v()Session session=factory.openSession();v/应用程序与数据打交道的一个对象v()Transaction trans=session.beginTransaction();v()通过session对象操作数据库vsession.delete();vsession.save()v session.saveOrUpdate()vsession.update()vsession.load();v()mit();v(7)关闭资源load load 和和 get get 方法的区别方法的区别vload 和 get 方法的区别:hibernate 对于 load 方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于 get 方法,hibernate 一定要获取到真实的数据,否则返回 null。HibernateHibernate的三种状态的三种状态v临时状态:临时状态:当 new 一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过 Session 的 save 或者 saveOrUpdate 把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象;v持久状态持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行 delete 操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。v游离状态(也叫:脱管状态):游离状态(也叫:脱管状态):当 Session 进行了 Close、Clear 后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。简单总结一下v(1):临时状态:(DB中没有记录,和session无关)v不受session 管理的,在对象中可表现为持久化对象的主键没有值 save()v(2):持久化状态:(DB中有记录,和session有关)v进入了session 的管理,session会自动进行同步。v(3):游离状态(托管):(DB中有记录,和session无关,需手工进行同步)v脱离了session 的管理。有与数据库中对应的主键,所以还可以进入持久化状态。关于Mysql的类型vmysql的表有三种类型InnoDB,MyISAM和bdb,其中只有InnoDB 是支持事务的。默认的不是InnoDB类型,而是MyISA的。v 可以通过:show table status from db_name like tablename;语句来查看该表的类型。然后如果不是InnoDB 的话就用:alter table tablename type=InnoDB;来改变表的类型。改变后就可以支持事务了,但是在写事务之前要加上:start transaction;v 否则的话,savapoint s;后回滚时会找不到这个断点。v如果想让我们的mysql中所有新建的表默认的都是InnoDB的话,可以在my.ini配置文件的mysqld项中default-table-type=innodb 就OK了!v也可以在创建表的时候设定:Engine=innodb
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服