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”)
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,删除一个学生,连带着与学生有关系的班级 在数据库的查询语句中,如果需要查询关系标的数据,那么需要多次查询,或者使用连接查询,使用不同的查询方法,就是不同的抓取策略 验证的查询语句 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

