立即检索&延迟检索&关联级别检索&批量检索

  


   class 标签中lazy=false 立即检索

     class 标签中lazy=true 延迟检索(详细看get和load的区别)

关联级别的检索:
     Customer c=(Customer)session.load(Customer.class, 1);
     Set set=c.getOrders()//检索Order对象的set集合
     在这个例子中,session.load(Customer.class, 1):查询主体表(customer)
     c.getOrders().size():查询客体表(orders)的集合大小
     查询客体表是否发生,以何种方式发生(立即检索、延迟检索和迫切左外连接
     检索 ),就是关联级别检索,通过set元素lazy属性设定
 

在Customer.hbm.xml中配置<set name="orders" fetch="" lazy="">
fetch取值:join select subselect------决定sql语句的形式
若把 fetch 设置为 “join”, lazy 属性将被忽略
lazy取值:true false extra------决定sql语句发出的时机



当 fetch 属性为 “join” 时:
检索 Customer 对象时, 会采用迫切左外连接(通过左外连接加载与检索指定的对象关联的对象)策略来检索所有关联的 Order 对象
lazy 属性将被忽略
Query 的list() 方法会忽略映射文件中配置的迫切左外连接检索策略, 而采用立即检索还是延迟加载策略由set集合的lazy属性决定



批量检索,从多的一端查询,查询所有的订单
在Customer.hbm.xml文件中增加batch-size属性

     * 在一方(客户)方的<set name="orders" batch-size="10">---- 一次最多可以查询10个客户的订单
     * 在一方(客户)方的<class name="cn.itcast.Customer" batch-size="10">----一次最多可以查询1个订单的10个客户







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值