hibernate4基本实现原理.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hibernate4基本实现原理.pdf

hibernate4 基本实现原理 整体流程 1 :通过configuration 来读 cfg.xml 文件 2 :得到SessionFactory 工厂 3 :通过SessionFactory 工厂来创建 Session 实例 4 :通过Session 打开事务 5 :通过session 的 api 操作数据库 6 :事务提交 7 :关闭连接 说明:以下分方法描述的实现流程并不是 Hibernate 的完整实现流程,也不是 Hibernate 的完整实现顺序,只是描述了 Hibernate 实现这些方法的主干和基本方式,主要是用来理解这些方法背后都发生了些什么,如果需要详细完整的实现流程, 请查阅 Hibernate 相应文档和源代码 1 / 16 当我们调用了 session.save(UserModel)后: 1 :TOPO :Hibernate 先在缓存中查找,如果发现在内部缓存中已经存在相同 id 的 PO ,就认为这个数据已经保存了, 抛出例外。 如果缓存中没有,Hibernate 会把传入的这个 TO 对象放到 session 控制的实例池去,也就是把一个瞬时对象变成了一个持 久化对象。 如果需要 Hibernate 生成主键值,Hibernate 就会去生成 id 并设置到 PO 上 2 :客户端提交事务或者刷新内存 3 :根据model 类型和 cfg.xml 中映射文件的注册来找到相应的 hbm.xml 文件 4 :根据hbm.xml 文件和 model 来动态的拼 sql ,如下: insert into 表名(来自 hbm.xml) (字段名列表(来自 hbm.xml )) values(对应的值的列表(根据 hbm.xml 从传入的 model 中获取值)) 5 :真正用JDBC 执行 sql ,把值添加到数据库 6 :返回这个PO 的 id。 2 / 16 当我们调用了 session.update(UserModel)后: 1 :DOPO :首先根据model 的主键在 hibernate 的实例池中查找该对象,找到就抛出错误。 如果没有就 DOPO ,Hibernate 会把传入的这个 DO 对象放到 session 控制的实例池去,也就是把一个瞬时对象变成了 一个持久化对象 2 :客户端提交事务或者刷新内存 3 :根据 model 类型和 cfg.xml 中映射文件的注册来找到相应的 hbm.xml 文件 4 :根据hbm.xml 文件和 model 来动态的拼 sql ,不进行脏数据检查,如下: update 表名(来自 hbm.xml) set 字段名(来自 hbm.xml )=值(根据 hbm.xml 从传入的 model 中获取值) where 条件 5 :真正用JDBC 执行 sql ,把值修改到数据库 3 / 16 4 / 16 当我们调用了 session.update(UserModel)后: 1 :首先根据model 的主键在 hibernate 的实例池中查找该对象,找到就使用该 PO 对象(用来检查脏数据)。 2 :客户端提交事务或者刷新内存 3 :Hibernate 会进行脏数据检查,如果没有数据被修改,就不执行下面的步骤了。 4 :根据model 类型和 cfg.xml 中映射文件的注册来找到相应的 hbm.xml 文件 5 :根据hbm.xml 文件和 model 来动态的拼 sql ,进行脏数据检查(如果开启了dynamic-update 的话),如下: update 表名(来自 hbm.xml) set 字段名(来自 hbm.xml )=值(根据 hbm.xml 从传入的 model 中获取值) where 条件 6 :真正用JDBC 执行 sql ,把值修改到数据库 5 / 16 6 / 16 Id 的生成方式为 assigned 的情况 当我们调用了 session.delete(UserModel)后: 1 :根据model 的主键在数据库里面查找数据,来保证对象的存在,然后把找到的对象放到内存里面,如果此时在 hibernate 的实例池中已经存在对应的实体对象(注意

文档评论(0)

dlmus + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档