hibernate的映射、三态、脏数据、Session缓存.docVIP

hibernate的映射、三态、脏数据、Session缓存.doc

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

如果您对hibernate的 映射、三态、脏数据、Session缓存仅仅只是听其名没有初步了解的话,此文你可以return了。最烦一些混IT时间长的SB业内名词倒是知道不少具体到的时候就只会含糊其辞还在哥面前装前辈让哥鄙视不已。 ? ?热心交流的帅哥欢迎您,恶语相向者请滚!     书上说inverse=false时,由主控方维持关系。。。 由于我是初学者,加上语文水平低下,实在不理解“维持关系”是个啥米意思 只能代码说话: class--》cid,cname;student--》sid,sname,class_id so: class为one-to-many端 class--》hbm--》 set name=students table=student cascade=save-update ????key column=class / ????one-to-many class=lcx.vo.Student / ?? /set Class class = new Class(); //class.id 为自动生成 class.setName(一年级1班); Student stu = new Student(); stu.setName(小MM); stu.setClass(class); 此时class 没有被Hibernate纳入Session缓存管理 在默认的情况下(即:没有设置cascade属性或cascade=none时),Hibernate不会自动“持久化他所关联”的其他临时对象。 class.getStudents().add(stu); session.save(class); 这样就成了,当然hibernatetemplete里面封装了一大堆成型的方法 继承模版比较好 这里仅为理解意思 show-sql 如下 insert into demo.class (cid, cname) values (66666666666666666666666666666666, 一年级1班) insert into demo.student (sid,sname,class_id) values (8888888888888888811cb2e04c888888, 小MM, 66666666666666666666666666666666) update demo.student set class_id=66666666666666666666666666666666 where sid=8888888888888888811cb2e04c888888 保存student时候并没有session.save(studen);依然会有插入 这就是cascade=save-update作用 第三条sql貌似不好理解吧。, 假如把 class端的配置文档中的 invser属性设置为true 在执行上面的程序,发现,就变成2条insert语句啦。。。。。(update没了。。。) 看来第三条的update语句和inverse有着密切的关系 当调用 Class.getStudents().add(stu)方法,进行添加操作时, (即:向 这个Class对象所属的“集合 (也就是调用getStudents方法所返回的那个Set集合)”中添加一个Student(即 add(stu)),也就是说,这个“新”添加的Student对象(stu), 他的Student.class_id字段“必须”,要等于“被添加方Class”的主键(即:Class.cid)。 从“数据库”层面来讲,也就是说,这个“新”添加的“Student”的class_id字段,必须要与“Class”的cid字段,存在主外键关联。) 正因为如此:所以Hibernate“怕” 在进行 Class.getStudents().add(stu) 这样的操作时, 出现意外情况(如: stu.getClass=null,即:stu没有所属班级), 即“添加方”(Student)与“被添加方”(Class),存在“外键”不一致的情况发生。 所以就出现了 那条多余的update语句。即:one-to-many(Class端)主动去维护Child.Class_id 所以就是说,Hibernate怕出错,就给你多执行一次无用的更新语句,以保证 add 到 Class“集合”中的所有Student 都是要与Class有外键关联的。 用普通话说就是: 一年1班.getStudents().add(小美女); 一年1班.getStudents().add(大美女); 也就是说现在不管是??小美女还是 大美女 如果他们,目前还没有自己的班级的话, 一年1班的班主任就会主动邀请他

文档评论(0)

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

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

1亿VIP精品文档

相关文档