2 - hibernate - 知识点

2026/4/29 2:22:37

cascade [k?'skeid]n. 小瀑布, 瀑布状物vi. 成瀑布落下[计] 层叠, 级[化] 级联

知识点

1 , 一对多懒加载

(// 懒加载 ,对象中只存在主键,获取主键时,依然不调用SQL) 验证语句 // 查询操作的时候,默认为懒加载(我查什么,框架就单单查找什么) // 如果想使我在查找数据的时候,框架在查找到我要的数据之后,还把关联表中的数据,一并查询,等待我的调用 // 修改xml中的属性,(默认-lazy=true)(需要修改为 false); public static void select(){ } // 获取一个数据 Stu stu = (Stu)session.get(Stu.class,2); System.err.println(stu.getName()); System.out.println(\); System.out.println(stu.getCla().getName()); 1.1,一对多懒加载(lazy=”true”) Hibernate: select stu0_.id as id0_0_, stu0_.name as name0_0_, stu0_.age as age0_0_, stu0_.phone as phone0_0_, stu0_.cla_id as cla5_0_0_ from Stu stu0_ where stu0_.id=? 春祥 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hibernate: select cla0_.id as id1_0_, cla0_.name as name1_0_, cla0_.homenum as homenum1_0_ from

Cla cla0_ where cla0_.id=? php 默认为懒加载

当调用关联表的文件的时候才开始查询

1.2, 修改为(lazy=”false”) 那么当 Hibernate: select stu0_.id as id0_0_, stu0_.name as name0_0_, stu0_.age as age0_0_, stu0_.phone as phone0_0_, stu0_.cla_id as cla5_0_0_ from Stu stu0_ where stu0_.id=? Hibernate: select cla0_.id as id1_0_, cla0_.name as name1_0_, cla0_.homenum as homenum1_0_ from Cla cla0_ where cla0_.id=? 春祥 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ php

2 , get与load(懒加载) 的区别

2.1 , 区别一 当要获取的值不存在时

Stu stu1 = (Stu)session.get(Stu.class,100); 返回Null ~~~~~~~~

Stu stu = (Stu)session.load(Stu.class,100);

Exception in thread \org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [domain.Stu#100]

2.2 , 区别二 加载的的时间点不同 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当 我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实 体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。 相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来: Stu stu1 = (Stu)session.get(Stu.class,100); 立即加载

Stu stu = (Stu)session.load(Stu.class,100); 知道调用的时候才开始加载

3,级联

类似与古代刑法连坐,删除一个人,连带着和他有关系的所有人都要受罪

cascade=\参数类型可以是一下三个save-update\\all\\none) all : 所有情况下均进行关联操作。

none:所有情况下均不进行关联操作。这是默认值。

save-update:在执行save/update/saveOrUpdate时进行关联操作。 delete:在执行delete时进行关联操作

(// cascade cascade [k?'skeid]n. 小瀑布, 瀑布状物vi. 成瀑布落下[计] 层叠, 级联[化] 级联)

3.1,删除一个学生,连带着与学生有关系的班级 3.2 , 修改一个学生,谁带着保存班级信息

在数据库的查询语句中,如果需要查询关系标的数据,那么需要多次查询,或者使用连接查询,使用不同的查询方法,就是不同的抓取策略 验证的查询语句 public static void select(){ Stu stu1 = (Stu)session.get(Stu.class,7); System.err.println(stu1.getCla().getName()); } 4.1 , 配置表中默认不写(fatch)

控制台输出两条查询语句 Hibernate: select stu0_.id as id0_0_, stu0_.name as name0_0_, stu0_.age as age0_0_, stu0_.phone as phone0_0_, stu0_.cla_id as cla5_0_0_ from Stu stu0_ where stu0_.id=? Hibernate: select cla0_.id as id1_0_, cla0_.name as name1_0_, cla0_.homenum as homenum1_0_ from Cla cla0_ where


2 - hibernate - 知识点.doc 将本文的Word文档下载到电脑
搜索更多关于: 2 - hibernate - 知识点 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219