Hibernate之深入持久化对象】的更多相关文章

Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate数据库表之间存在依赖关系的情况,在Hibernate中配置,这样在实际开发中会大大减少SQL的编写量.现在进一步深入Hibernate的级联关系. 1.级联关系 在Hibernate中持久化对象之间通过相互关联互相引用,对象进行保存.更新和删除的时候,关联的对象也会执行相对应的操作,这些使用Hi…
Hibernate对其持久化对象实现了缓存管理,来提高系统性能,Hibernate支持两级缓存管理,一级缓存 是由Session提供的,因此它只存在于Session的生命周期中,是Session所内置的,不能被卸载. Hibernate的二级缓存是由SessionFactory提供的,他作为一个可插入的组件使用的,默认是不支持的,应用必须明确配置二级缓存才能使用. Session缓存的作用: 降低数据库的访问频率 保证缓存中的对象与数据库中的相关记录保持同步持久化对象的状态: 临时状态(Tran…
持久化对象 再讲持久化对象之前,我们先来理解有关session中get方法与 load方法区别: 简单总结: (1)如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象. 在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常. 由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id…
Hibernate是一个彻底的O/R Mapping 框架.之所以说彻底,是因为相对于其他的 框架 ,如Spring JDBC,iBatis 需要手动的管理SQL语句,Hibernate采用了完全 面向对象的方式来操作数据库. 但是当开发者需要深入的了解Hibernate底层运行时,对Hibernate的数据访问进行优化时,就需要了解Hibernate的底层SQL操作了.由于对于绝大部分的应用来说, 数据访问是一个十分巨大的,耗时的操作,因此深入Hibernate底层对应的SQL操作非常必要.…
上篇文章讨论了Hibernate的核心对象,在开发过程中经经常使用到的有JTA.SessionFactory.Session.JDBC,当中SessionFactory可以看做数据库的镜像,使用它可以创建Session对象.JTA用来管理事务,在对象模型改动后同步到数据库中.另外还有Hibernate作为持久层它封装了持久层的转化过程.以下着重讨论持久对象的转换过程. 一.状态解析       Hibernate的持久对象主要分为三个状态,Transient.Persistent.Detache…
学框架,配置都是不可少的,有了配置,框架才知道我们想做什么,才知道如何去执行我们需要的操作! hibernate的配置文件,总体来说分为两个部分: 1.主配置文件hibernate.cfg.xml文件,一般放在classpatn路径下 2.映射文件xxx.hbm.xml文件,一般跟实体类放在同一个包下 前者是配置相关的数据库以及引入的映射文件信息,而后者则主要配置对象与表之间的映射关系: 注意:配置文件的路径,因人而异,有的将映射文件集体放置在一起也有,所以看个人喜好,没有强制规定如何存放. 以…
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. session.update(),saveOrUpdate()和lock()方法使游离对象转变为持久化状态. Query接口的list()方法返回的list集合中存放的都是持久化对象. 一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时,会把这个临时对象也转变为持久化对象.…
一.持久化对象的状态        站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状态.   •临时对象(Transient): –在使用代理主键的情况下, OID 通常为null –不处于 Session的缓存中 –在数据库中没有对应的记录 •持久化对象(也叫"托管")(Persist): –OID 不为null –位于 Session缓存中 –若在数据库中已经有和其对…
三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,增加到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓…
持久化对象的生命周期 瞬态(自由态) 表示对象在内存中存在,在数据库中没有数据相关,比如刚刚new出来的一个对象 持久态 持久态指的是持久化对象处于由Hibernate管理的状态,这种状态下持久化对象的变化将会被同步到数据库中 session.save() .....到..session.getTransaction().commit();这个过程 托管态(游离态 提交之后的状态 处于持久态的对象,在其对应的Session实例关闭后,此时对象进入游离态.也就是说Session实例是持久态对象的…