- 0
- 0
- 约2.98千字
- 约 18页
- 2026-02-27 发布于北京
- 举报
知识点1:区分立即检索和延迟检索
查询编号为1的客户
立即检索:立即加载检索方法指定的对象
延迟检索:延迟加载检索方法指定的对象
只针对session.load()方法,不针对get()方法
知识点2:理解延迟检索中的
publicvoidloadCustomertrue(){
Sessionsession=sessionFacoty.openSession();
Transactiontx=session.beginTransaction();
//此时查询到的c对象是一个对象
Customerc=(Customer)session.load(Customer.class,1);
System.out.println(c.getClass());//对象
c.getClass();//hibernate不会执行select语句
c.getId();//hibernate不会执行select语句
c.getAge();//该行hibernate会执行select语句
mit();
session.close();Customer对象
}对象
只有延迟检索会产生对象,立即检索不会产生对象
Customer对象
Hibernate使用javassist-3.9.0.GA.jar包创建
知识点3:区分类级别和关联级别的检索
类级别的检索:
Customerc=(Customer)session.load(Customer.class,1);
session的方法直接检索Customer对象,对Customer对象到底采用立即检索
还是延迟检索方式
通过class元素的lazy属性设定
关联级别的检索:
Customerc=(Customer)session.load(Customer.class,1);
Setset=c.getOrders()//检索Order对象的set集合
在这个例子中
session.load(Customer.class,1):查询的客户表
c.getOrders():查询订单表
查询订表表是否发生,以何种方式发生(立即检索、延迟检索),就是关联级别检索
通过set元素lazy属性设定
知识点4:类级别检索策略
⚫类级别可选的检索策略包括立即检索和延迟检索,默认为延
迟检索
⚫类级别的检索策略可以通过class元素的lazy属性进行
设置
⚫如果程序加载一个对象的目的是为了它的属性,可以采
取立即检索.如果程序加载一个持久化对象的目的是仅仅为
了获得它的,可以采用延迟检索
⚫无论class元素的lazy属性是true还是false,Session的
get()方法及Query的list()方法在类级别总是使用立即检索
策略
⚫若class元素的lazy属性为true或取默认值,Session的
load()方法不会执行查询数据表的SELECT语句,仅返回
类对象的实例,该类实例有如下特征:
•由Hibernate在运行时采用javassist工具动态生成
•Hibernate创建类实例时,仅初始化其OID属性
•在应用程序第一次类实例的非OID属性时,Hibernate会
初始化类实例
知识点5:关联级别的检索策略
⚫在映射文件中,用set元素来配置一对多关联及多对多关联关
系.set元素有lazy属性
•lazy:主要决定orders集合被初始化的时机.即到底是在加载
Customer对象时就被初始化,还是在程
您可能关注的文档
最近下载
- 《阿尔茨海默病及相关痴呆的营养预防和干预专家共识(2025)》解读PPT课件.pptx VIP
- 关于高校基层党组织机构优化设置的探讨.doc VIP
- 2025江苏医药职业学院单招《英语》真题附参考答案详解【精练】.docx VIP
- 第一单元第一课《领略丝路遗珍》课件2025-2026学年人美版初中美术八年级下册.pptx VIP
- 岩土工程勘察收费标准(完整版).docx VIP
- 2025四川省中职学生单招考试英语答案 .pdf VIP
- 快消年度工作总结.pptx VIP
- 慢性肾脏病相关瘙痒管理中国专家共识解读(PPT课件.pptx VIP
- 企业所得税年度纳税申报表A类.pdf VIP
- 2022高二英语人教版新教材选择性必修三课文及翻译(英汉对照).pdf VIP
原创力文档

文档评论(0)