0700__04_Hibernate__All选编.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
0700__04_Hibernate__All选编

fetch set 标签上保持默认fetch 默认select ,额外发送一条sql 进行查询 set 标签上保持fetch=join lazy 默认true 已经不起作用,一条sql语句从数据库把关联全部查询 set 标签上保持fetch=subselect,执行效果跟select一样 fetch = select,查询班级 ,发送一条sql,查询每个班级的学生,每次都会发出一条sql语句 fetch = subselect,查询多个实体对象 另外发送一条SELECT 语句抓取在前面查询到(或者抓取到)的所有实体对象的关联集合 fetch_batch_set batch-size 定义在 set 上,batch-size=“3” 当前实体对象的数量为3个,与当前3个实体对象关联的对象都会被查询出来 where classes0_.id in ( ?, ?, ? ) pessimisticLock【悲观锁】 LockMode.UPDATE lazy失效 发送了select … for update 子句的形式,给数据库,给数据加锁,独占数据 完全依赖数据库来保证 LockMode.WRITE 更新或者插入一行记录的时候,锁定级别自动设置 LocalMode.Read: 读取记录的时候会自动获取。 实施性不是很好。瓶颈在数据库上 悲观锁的实现,通常依赖于数据库机制,通常依赖于数据库机制,在整个过程中将数据锁定,其他任何用户都不能读取和修改 pessimisticLock【悲观锁】 OptimisticLock【乐观锁】 version 由 hibernate 维护,每次更新Hibernate自动+1 每次更新hibernate会根据id 和 version 来更新对应记录 如果表中没有对应记录,另外一个事物已经更新此记录 hibernate会抛出异常 OptimisticLock【乐观锁】 Cache 缓存 目的——减少向数据库发送sql语句的次数 firstLevel——一级缓存 :执行查询,检查一级缓存是否有相关对象数据,如果没有对应数据,发出sql语句到数据库中查询 :将查询得到的对象 缓存。 ——get() 和 load( ) 是一样的,可以从Cache中查询。 ——query.list( ) 不会从一级缓存中查询,但是会把查询结果放到缓存中。 ——Iterate 会先发送一条sql,查询id;根据id查询name,将查询结果缓存 —— ——一级缓存,只缓存实体对象,不会缓存普通属性。 SecondLevel——二级缓存 —— Cache 缓存2 Cache 缓存 开启查询缓存的时候后,会缓存实体对象的Id 事务的隔离级别 未提交读 提交读 * 持久化实例对象 (Persistent Objects) Hibernate Session接口 (Hibernate API) 关系数据库 应用程序 (业务逻辑操作) 应用程序 (业务逻辑操作) Hibernate 与orm之间的关系 对象模型 关系模型 POJO O/R Mapping Hibernate核心接口 业务逻辑层 LifeCycle Validatable Persist Class Interceptor UserType 持久化层 Transaction Session Query SessionFactory Configuration JNDI JDBC JTA transient persistent detached new get() load() find() iterate() etc. save( ) save or update( ) evict() close() clear() delete() update() saveOrUpdate() lock() affects all instances in a Session garbage garbage 持久化对象的生命周期(lifecycle) User user = (User)session.load(User.class,”001001001”); //不会发出查询sql,因为load实现了lazy(延迟加载 / 懒加载) //延迟加载 实现原理:采用代理方式(CGLIB) //延迟加载:只有在真正使用的时候才加载相关的对象,lazy是hibernate的重要特性 flush : 1、将持久化对象与数据库同步,发出sql 2、执行检查脏数据 3、清理缓存 -------------------------------------------------------------

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档