懒加载分析情况

懒加载分析情况延迟加载也称懒加载,他是Hibernate为提高执行效率而提供的一种机制,即只有真正使用该对象的数据是才会创建。Hibernate中主要是通过代理(proxy)机制来实现延迟加载的。它的具体过程是Hibernate从数据库获取某一个对象的数据时,获取某一个对象的集合属性值时,或获取某一个所关联的另一个对象时,由于没有使用该对象的数据(除标示符值外),hibernate并不从数据库加载真正的数据,而只是为该对象创建一个代理,对象来代表这个对象,这个对象上的所有属性都为默认值;只有在真正需要使用该对象的数据是才创建这个真是对象,真正从数据库中加载他的数据。这样在某些情况下,就可以提高插叙效率。一、分析各种延迟加载策略的异同点当没有关联关系的时候,lazy属性应该设置在class标签内,取值为true和falsetrue:系统默认,它表示支持懒加载功能,并创建代理对象等操作。在调用其对象属性的时候,才去查询数据库,并必须在session关闭之前false:表示取消懒加载功能,当执行load方法的时候,直接就去数据库中查询并返回,与get()一样当在关联关系中lazy则有三个属性 proxy no-proxy falseproxy:当前对象的単值相关对象只有在调用它的主键外的其他属性的get方法时才加载它。no-proxy:当前对象的単值相关对象只有在调用它的属性时才加载,需要字节码增强。false:表示取消懒加载功能。二、鉴别各种抓取策略的异同点,利用fetch属性来设置抓取策略取值分别为:select 表示二次select语句查询 join 表示连接查询。如果加上,则懒加载不起作用,直接将两表连接查询。三、分析各种出现的情况系统采用处理方式:在映射文件中,用元素来配置一对多关联关系。元素有lazy和fetch属性Lazy:主要决定orders集合被初始化的时机。即到底是在加载Customer对象时就被初始化,还是在程序访问orders集合时被初始化。Fetch:取值为“select”或“subselect”时,决定初始化orders的查询语句的形式;获取值为“join”,则决定orders集合被初始化 的时机。若把fetch设置为“join”,lazy属性将被忽略fetch(默认值select) Lazy(默认值是true) 策略Join False 采用迫切左外联接检索。Join True 采用迫切左外联接检索。join Extra 采用迫切左外联接检索。select False 采用立即检索 select True 采用延迟检索 select Extra 采用延迟检索c.getOrders().size() 执行 select count(id) from orders where customer_id =?for(Order o:set){ o.getOrderNumber();} 将执行:select customer_id , id,order_number ,price from orders where customer_id=?subselect false/true/extra也分为3中情况 嵌套子查询(检索多个customer对象时) Lazy属性决定检索策略)select customer_id,order_number,price from orders where customer_id in (select id from customers)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值