hibernate会话对象处理

hibernate会话对象处理

ID:5263038

大小:1.27 MB

页数:72页

时间:2017-12-07

hibernate会话对象处理_第1页
hibernate会话对象处理_第2页
hibernate会话对象处理_第3页
hibernate会话对象处理_第4页
hibernate会话对象处理_第5页
资源描述:

《hibernate会话对象处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、会话对象处理刘明教学纲要•对象的生命周期和状态•会话的定义•使用HibernateAPI•Hibernate会话的实现方式•Hibernate事务管理•Hibernate级联关系持久化生命周期•应用程序必须知道持久化对象的状态和生命周期。•持久化生命周期指的是对象在它的生命期间经历的状态。•工作单元(UnitofWork)指把一组操作当做一个原子组。•持久化上下文(persistencecontext)指的一个高速缓存。它记录一个特定的工作单元中给对象所做的所有修改和状态变化。对象状态图对象状态•HibernateSessionAPI的调用用来改变对象的状态。•瞬时(tran

2、sient)对象:它不与数据库表行相关联。一旦不再被引用时,它们的状态消失。•持久化(persistent)对象:包含数据库同一性的实体实例,从数据库中获得的实例。它始终与持久化上下文关联。•移出(removed)对象:对象在一个工作单元内被删除。一旦工作单元完成,它就将立即从数据库中被删除。•脱管(detached)对象:在工作单元结束后,持久化上下文关闭,持久化对象转变成脱管状态。Hibernate通过reattachment和merging,可将脱管对象转变成持久化对象。它能创建跨域用户思考时间的长工作单元(对话)。持久化上下文•托管实体实例的一个高速缓存。•帮助自动脏

3、检查。–一个修改过的对象还没有传播到数据库时被认为是脏的。–利用透明的事务级迟写把状态变化传播到数据库。–默认情况下,Hibernate生成的SQLupdate语句更新所有的列。如果只想更新被修改的列,可以通过在类的映射中设置dynamic-update=“true”启用动态的SQL生成。持久化上下文•实体的可重复读取。–如果Hibernate需要加载一个对象,它可在当前的持久化上下文中查找对象。如果在那里找到了实体,就不会发生数据库的读取操作,从而提高了系统性能。•工作单元是单线程处理,避免了并发访问问题。•保证了只有一个对象表示一个数据库行。会话•每次请求一个会话(ses

4、sionperrequest):当来自应用程序用户的一个请求需要访问数据时,就启动一个新的工作单元。这个工作单元在处理结束时终止,并为客户准备好了响应。•Hibernate可以支持一个可能长期运行的工作单元(conversation)的实现。–脱管对象–一个持久化上下文利用脱管对象每次请求一个对象•持久化上下文只跨一个特定请求的处理,对话期间应用程序手工重附和合并脱管实体实例。利用每次对话一个会话•把一个持久化上下文扩展到跨整个工作单元。对象的同一性•Hibernate同一性范围是持久化上下文的范围。问题•allObjects的元素有多少个?覆盖equal()和hashcod

5、e()扩展持久化上下文•对话期间的所有请求处理都由相同的持久化上下文管理。当来自用户的请求被处理之后,持久化上下文没有关闭。•在用户思考时间内,它断开与数据库的链接。在用户的对话中继续时,持久化上下文被重新链接到数据库,就可以处理下一个请求。•消除了脱管对象状态。Hibernate接口•持久化管理器API通常提供以下服务:•基础的CRUD操作。•查询执行。•事务的控制。•持久化上下文管理。保存和加载对象•开始工作单元:–从SessionFactory中获得一个Session对象。–如果应用程序访问多个数据库,它可能会有多个SessionFactory。•瞬时对象持久化–ses

6、sion.save()方法持久化瞬时对象。获得数据库标示符。–Tx.commit()实现了持久化上下文与数据库同步。–Session.close()关闭持久化上下文。在工作单元中使对象变成持久化获取持久化对象•Get()和load()区别在于它们如何表明实例无法找到。Get()就返回null,load()方法则抛出一个ObjectNotFoundException。修改持久化对象•当tx.commit()被调用时,这些修改在清除期间被传播到数据库。这种机制称为自动脏检查。使持久化对象变成瞬时•使用delete()使用托管对象•调用update(),重附被修改的脱管实例。使用脱

7、管对象•重复未被修改的脱管实例。•在调用lock()之前进行的改变没有被传播到数据库。使脱管对象变瞬时•Delete()具有两个功能:1重附对象到session。2对象状态的删除。合并托管对象•Session.update(item)为什么会报错?合并托管对象•为什么item2与item3相等?管理持久化上下文•控制持久化上下文高速缓存。•每个持久化实例的复制、快照都保存在高速缓存中。•当一个session中加载上千个对象,有可能遇到OutofMemoryException。•可采取的措施:–保持持久化

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。