ImageVerifierCode 换一换
格式:PPT , 页数:41 ,大小:1.88MB ,
资源ID:9486543      下载积分:12 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9486543.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(hibernate配置PPT学习课件.ppt)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

hibernate配置PPT学习课件.ppt

1、标题标题标题,第一级,第二级,第三级,*,Hibernate,配置,目 录,1 Hibernate,概述,2,第一个,Hibernate,程序,3 Hibernate,的配置文件,4,深入理解持久化对象,5,Hibernate,的映射文件,6,JPA Annotation介绍,7,本讲小结,2,Hibernate,体系结构,简要的Hibernate体系架构,Hibernate全面解决方案体系架构,3,Hibernate,全面解决方案架构解释,SessionFactory,单个数据库映射关系经过编译后的内存镜像。,Session,它是应用程序和持久存储层之间交互操作的一个单线程对象,瞬态对象,系

2、统进行,new,关键字进行创建的,Java,实例,没有,Session,相关联,此时处于瞬态,持久化对象,如果,PO,实例与,Session,实例关联起来,且该实例关联到数据库的记录,脱管对象,如果,PO,实例曾经与,Session,实例关联过,但是因为,Session,的关闭等原因,,PO,实例脱离了,Session,的管理,4,Hibernate,全面解决方案架构解释,事务,(Transaction),代表一次原子操作,它具有数据库事务的概念,但它通过抽象,将应用程序从底层的具体的,JDBC,、,JTA,和,CORBA,事务中隔离开。,一个,Session,之内可能包含多个,Transac

3、tion,对象。,所有的持久化操作都应该在事务管理下进行,即使是只读操作。,连接提供者,(ConnectionProvider),生成,JDBC,的连接的工厂,同时具备连接池的作用,他通过抽象将底层的,DataSource,和,DriverManager,隔离开。这个对象仅在应用程序需要扩展时使用。,事务工厂,(TransactionFactory),生成,Transaction,对象实例的工厂,5,Hibernate,工作原理,Configuration,cfg,=new,Configuration().,configure(),;,Session s=sf.openSession();,m

4、it();,s.close();,通过,Session,接口提供的各种方法操纵对数据库的访问,提交数据库操作结果,关闭,Session,连接,结束,利用上面创建的,Session,实例创建事务操作接口,Transaction,的一个实例,Transaction tx=s.beginTransaction();,包含了,Hibernate,所有运行期参数,SessionFactory sf=cfg.buildSessionFactory();,开始,启动,hibernate,构建,Configuration,实例,初始化该实例中的所有变量,加载,cfg.xml,配置文件到该实例(内存),通过,c

5、fg.xml,文件中的,mapping,节点配置并加载,hbm.xml,文件至该实例(内存),利用上面的,Configuration,实例创建一个,SessionFactory,实例,利用上面创建的,SessionFactory,实例创建连接,6,从流程图中可以看出,,Hibernate,的执行过程如下:,(,1,)配置好,hibernate,的配置文件和与类对应的配置文件后,启动服务器。,(,2,)服务器通过实例化,Configeration,对象,读取,cfg.xml,文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系。,(,3,)通过实例化的,Configeration,对象创

6、建一个,sessionFactory,实例。,(,4,)通过,sessionFactory,实例可以创建,session,对象。,(,5,)得到,session,之后,便可以开始一个事务,然后就可以通过,Session,接口提供的各种方法操纵对数据库的访问。除了比较复杂的全文搜索外,简单的操作都可以通过,hibernate,封装好的,session,内置方法来实现。,(,6,)操作完成后,提交数据库操作结果,关闭,Session,连接。,7,Hibernate的配置,Configuration对象,org.cfg.Configuration实例代表一个应用程序到SQL数据库的映射配置,Conf

7、iguration提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的SessionFactory对象。,配置Hibernate的方式,使用properties文件作为配置文件。,使用cfg.xml文件作为配置文件。,不使用任何的配置文件,以编码方式来创建Configuration对象。,8,Hibernate的配置,JDBC连接属性配置,数据库方言配置,JNDI数据源的连接属性配置,Hibernate事物属性配置,二级缓存相关属性配置,外连接抓取属性配置,其他常用的配置,9,JDBC连接配置中最重要的设置,connection.driver_class,:设置

8、连接数据库驱动。,connection.url,:设置所连接数据库服务的URL。,connection.username,:连接数据库的用户名。,connection.password,:连接数据库的密码。,connection.pool_size,:设置hibernate数据库连接池的最大并发连接数。,dialect,:设置数据库连接所使用的方言。,10,其他常用的配置属性,show_sql,:是否在控制台输出Hibernate生成的SQL语句,只能为true或者false两个值,format_sql,:是否将SQL语句转换成格式良好的SQL语句。,use_sql_comments,:是否在

9、Hibernate生成的SQL语句中添加有助于调试的注视,只接受true和false两个值。,jdbc.fetch_size,:指定JDBC抓取数量的大小,它可以接受一个整数值,其实质是调用Statement.setFetchSize()方法。,jdbc.batch_size,:指定Hibernate使用JDBC2的批量更新的大小,它可接受一个整数值,建议是取5到30之间。,connection.autocommit,:设置是否自动提交。通常不建议自动提交。,hbm2ddl.auto,:设置当创建SessionFactory是,将Drop刚建的数据表。该属性可以是update、create和d

10、rop-create三个值。,11,目 录,1 Hibernate,概述,2,第一个,Hibernate,程序,3 Hibernate,的配置文件,4,深入理解持久化对象,5,Hibernate,的映射文件,6,JPA Annotation介绍,7,本讲小结,12,持久化类的要求,提供一个,无参的构造器,提供一个,标识属性,标识属性的类型尽量,避免基本类型,为持久化类的每个属性添加,set和get,方法,使用,非final类,重写,equal()和hashCode()方法,13,持久化对象的状态,持久化对象 PO=POJO+映射文件,PO可有以下的3种状态。,瞬态,:如果PO实例从未与Sess

11、ion实例关联过,该实例处于瞬态状态。,持久化,:如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录。,脱管,:如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原因,PO实例脱离了Session 的管理,这种状态被称为脱管状态。,对PO的操作必须在Session的管理下才能同步到数据库,Session由SessionFactory 工厂产生,SessionFactory是数据库编译后的内存镜像,通常一个对应一个SessionFactory对象。SessionFactory对象是由Configuration对象生成,Configuration负责加载

12、Hibernate配置文件。,14,持久化对象的状态,瞬态,:对象由new操作符创建,且尚未Hibernate Session 关联的对象被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识,如果程序中失去了瞬态对象的引用,瞬态对象将会被垃圾回收机制销毁。使用Hibernate Session 可以将其变为持久化状态。,15,持久化对象的状态,持久化,:持久化实例在数据库中有对应的记录,并且拥有一个持久化标识。持久化的实例是可以刚刚保存的,也可以是刚刚被加载的,无论那一种,持久化对象都必须与指定的hibernate Session关联。hibernate会检测到处于持久化状态

13、对象的改动,在当前操作执行完成时将对象数据写回数据库。开发者不需要手动执行UPDATE。,16,持久化对象的状态,脱管,:某个实例曾属于持久化状态,但随着与之关联的Session被关闭,该对象就变为了脱管态。对脱管对象的引用依然有效,对象可以被继续修改。如果让脱管对象与某个Session关联,那么这个脱管态对象将会重新转换为持久化状态,而脱管态期间的改动也不会丢失,也可被写入数据库。正是因为这个原因,逻辑上的长事务成为了可能,它被称为应用程序事务。即事务可以跨越用户的思考,因为当对象处于脱管态,对该对象操作无须锁定数据库,不会造成性能的下降,。,17,持久化对象的状态迁移,18,持久化实体:,

14、1,、,Serializable save(object obj),将对象变为持久化状态,2,、,void persist(object obj),将对象转化为持久化状态,3,、,Serializable save(object obj,object pk),将,obj,对象转化为持久化状态,该对象保存到数据库,指定主键值,4,、,void persist(object obj,object pk),也加了一个设定主键,19,把一个瞬态对象变成持久化状态:,-,/,创建消息对象,News n=new News();,/,设置消息标题和消息内容,n.setTitle(,疯狂,Java,联盟成立了

15、);,n.setContent(,疯狂,Java,联盟成立了,,+,网站地址,www.crazyit.org);,/,保存消息,sess.save(n);,20,Get方法和Load方法的,区别,get():立即加载,对象的属性立即从数据库中去查找,load():延迟加载,对象的属性只有在使用的时候才从数据库中去查找,21,更新持久化实体:,u.setUserName(123123123123);,sess.flush();,底层在,sess.flush(),之前生成一条,update,语句带有,where=,22,更新托管实体:,程序修改托管状态时,程序应该显式的使用新的,Session,

16、来保存修改。,hibernate,提供了三个方法,Update,方法:如果持久化过时使用,save,方法:如果没有持久化过会时使用。,updateOrSave(),方法:,如果不记得该对象是否 持久化过时使用。,23,merge,方法与,update,方法功能相同,,区别:,执行,sess.merge(a),方法后,,a,对象不是持久化对象的状态。,而,Update,会把,a,变成持久化对象,24,删除持久化实体,delete,(),Session,的,delete,()方法能使一个持久化对象或临时脱管对象转化为临时对象。,对于脱管对象,,delete,()方法从数据库中删除与它对应的记录;,

17、对于持久化对象,,delete,()从数据库中删除与它对应的记录,并且把它从,Session,的缓存中删除。,如:,sess2.delete(u);,25,close,(),当调用,Session,的,close,()时,,Session,的缓存被清空,缓存中的所有持久化对象都变为脱管对象。,如果在应用程序中没有引用这些脱管对象,它们就会结束生命周期。,evict,(),Session,的,evict,()能够从缓存中删除一个持久化对象,使它变为脱管状态。,当,Session,的缓存中保存了大量的持久化对象时,会消耗许多内存空间,为了提高性能,可以考虑调用,evict,(),从缓存中删除一些持

18、久化对象。,但不推荐使用,evict,()。,26,1.save,persist,保存数据,,persist,在事务外不会产生,insert,语句。,2.delete,删除对象,3.update,更新对象,如果数据库中没有记录,会出现异常。,4.get,根据,ID,查,会立刻访问数据库。,5.Load,,根据,ID,查,,(,返回的是代理,不会立即访问数据库,),。,6.saveOrUpdate,merge(,根据,ID,和,version,的值来确定是,save,或,update),调用,merge,你的对象还是托管的。,7.lock(,把对象变成持久对象,但不会同步对象的状态,),。,27

19、通过,Session,完成基本操作,Hibernate,对数据库的基本操作是通过,Session,来完成的。,Session,提供了基本的保存、更新、删除和查询的方法。,28,1,保存数据,session.save(),方法用于实体对象的持久化保存。,如:,session.save(),方法执行时,并不会马上更新数据库库,只有在,session,清理缓存时才有可能执行,insert,语句。,Person user=new Person();,user.setName(zx);,Transaction tx=session.beginTransaction();,session.save(us

20、er);,session.flush();,mit();,session.close();,tx.close();,29,2,加载数据,session,的,load(),和,get(),方法都能根据给定的,OID,(,Object identifier,,对象标识)从数据库中加载一个持久化对象。,区别:当数据库中不存在与,OID,对应的记录时,,load(),方法抛出,net.sf.ObjectNotfoundException,异常,而,get(),方法返回,null,这两个方法都能将对象变成持久化状态,置于当前,Session,的缓存中,因此修改了持久化对象的属性后,当,Session,清

21、理缓存时,会根据持久化对象的属性变化来同步更新数据库。,30,Session session1=sf.openSession();,Transaction tx1=session.beginTransaction();,Custom a=(Custom)session1.load(Custom.class,new Long(1);,Custom b=(Custom)session1.load(Custom.class,new Long(2);,mit();,Session1.close();,31,C,3,更新数据,session.update(),方法能够将一个处于临时脱管或状态的对象,重新

22、纳入,Hibernate,的内部缓存,变成持久化对象。,session.update(),方法被调用时,并不立刻执行,SQL,语句,而是等到更新操作累计到一定程度的时候在提交事务的时候一起执行。,Transaction tx=session.beginTransaction();,session.update(customer);,/,提交,mit();,session.close();,tx.close();,32,4 saveOrUpdate,方法,有,save(),和,update(),方法的功能,对于传入的对象,首先会执行一遍查询语句判断该对象在数据库中是否存在,然后调用相应的方法。,

23、如果传入该方法的是一个脱管对象,那么这个方法就会执行,update,操作,如果传入该方法的是一个临时对象,那么这个方法就会执行,insert,操作。,原理:,首先在缓存中寻找,如果找到就直接返回,如果实体实现了拦截方法,就执行,isUpdate(),方法,如果实体处于临时状态就执行,save(),方法,如果实体处于脱管状态就执行,update(),方法,33,C,5,删除数据,delete(),方法用于从数据库中删除一个实体所对应的数据,如果传入的对象是持久化对象,那么当清理缓存时,就会执行,delete,操作。,如果传入的是脱管对象,那么首先会使该对象与,session,相关联,然后当清理缓

24、存时,再执行,delete,操作,例如:,Session session=sessionFactory().openSession();,Transaction tx=session.beginTransaction();,Customer customer=(Customer)session.load(Customer.class,,”,1”);,/,计划执行一条,delete,语句,session.delete(customer);,/,清理缓存,执行一条,delete,语句,mit();,/,关闭,session,,这时将会把,customer,对象从缓存中删除。,session.close();,34,35,36,37,38,39,40,41,

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服