延迟加载(Lazy Loading)3

问题描述

Hibernate.initialize方法可以通过强制加载关联对象实现这一功能:Hibernate.initialize(user.getAddresses());session.close();//通过Hibernate.initialize方法强制读取数据//addresses对象即可脱离session进行操作Sethset=user.getAddresses();TAddressaddr=(TAddress)hset.toArray()[0];System.out.println(addr.getAddress());为了实现透明化的延迟加载机制,hibernate进行了大量努力。其中包括JDKCollection接口的独立实现。如果我们尝试用HashSet强行转化Hibernate返回的Set型对象:Sethset=(HashSet)user.getAddresses();就会在运行期得到一个java.lang.ClassCastException,实际上,此时返回的是一个Hibernate的特定Set实现“net.sf.hibernate.collection.Set”对象,而非传统意义上的JDKSet实现。这也正是我们为什么在编写POJO时,必须用JDKCollection接口(如Set,Map),而非特定的JDKCollection实现类(如HashSet、HashMap)申明Collection属性的原因。回到前面TUser类的定义:publicclassTUserimplementsSerializable{……privateSetaddresses=newHashSet();……HibernateDeveloper’sGuideVersion1.0September2,2004Somanyopensourceprojects.WhynotOpenyourDocuments?}我们通过Set接口,申明了一个addresses属性,并创建了一个HashSet作为addresses的初始实例,以便我们创建TUser实例后,就可以为其添加关联的address对象:TUseruser=newTUser();TAddressaddr=newTAddress();addr.setAddress("Hongkong");user.getAddresses().add(addr);session.save(user);

时间: 2024-11-02 08:30:28

延迟加载(Lazy Loading)3的相关文章

延迟加载(Lazy Loading)1

问题描述 为了避免一些情况下,关联关系所带来的无谓的性能开销.Hibernate引入了延迟加载的概念.如,示例中user对象在加载的时候,会同时读取其所关联的多个地址(address)对象,对于需要对address进行操作的应用逻辑而言,关联数据的自动加载机制的确非常有效.但是,如果我们只是想要获得user的性别(sex)属性,而不关心user的地址(address)信息,那么自动加载address的特性就显得多余,并且造成了极大的性能浪费.为了获得user的性别属性,我们可能还要同时从数据库中

延迟加载(Lazy Loading)2

问题描述 尝试执行以下代码:Criteriacriteria=session.createCriteria(TUser.class);criteria.add(Expression.eq("name","Erica"));ListuserList=criteria.list();TUseruser=(TUser)userList.get(0);System.out.println("Username=>"+user.getName());S

有没有人分享一下好方法给 webservice 用 lazy loading?

问题描述 简单来讲就是一个entity带着一大堆childentities,有one-to-one,也有one-to-many比如customer-contact-orders-comments在front-endUI上有multipletabpages,只有点到contact的tab我才想loadcontactentity,否则就只是最基本的customerlazyloading在webservice里比较麻烦的问题就是,如果datacontract定义了所有的children,那每次send

NHibernate之旅(12):初探延迟加载机制

节内容 引入 延迟加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过前面文章的分析,我们知道了如何使用NHibernate,比如CRUD操作.事务.一对多.多对多映射等问题,这篇我们初步探索NHibernate中的加载机制. 在讨论之前,我们看看我们使用的数据模型,回顾一下第二篇建立的数据模型. Customer与Orders是一对多关系,Order与Product是多对多关系.这一篇还是使用这个模型,有关具体配置和映射参考本系列的文章. 延迟加载(Lazy Loading

EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

原文:EF如何操作内存中的数据以及加载相关联表的数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过ObjectContext来操作数据库的,一看是Object打头的,自然相当庞大,方法也比较多.到了经典的4.1版本,EF小组推出了一些更简单好用的API,就是DbContext,它包括更常用的方法.看看EF小组是怎么说

YII 验证和消息

setFlash(), getFlash()可以完成验证成功后提示 Java代码   <?php   # 成功信息提示   Yii::app()->user->setFlash('success', "Thinks saved success!");   # 错误信息提示   Yii::app()->user->setFlash('error', "here has an Error, Please check that!");   #

Contoso 大学 - 5 – 读取关联数据

原文 Contoso 大学 - 5 – 读取关联数据 By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's Web Platform & Tools Content Team. 原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/reading-related-data-with-the-entity-frame

PHP YII框架开发小技巧之模型(models)中rules自定义验证规则_php实例

YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证表单安全和信息的有效性.还是给大家具体说明一下: 以下是视图(views)部分的简单代码: <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'tag-form', 'enableAjaxVa

在JavaScript应用中实现延迟加载的方法_基础知识

无论简单还是复杂的Web应用,都由一些HTML.JavaScript.CSS文件组成.通常开发者会通过JQuery.Knockout.Underscore等等这样的第三方JavaScript框架来提高开发速度.由于这些JavaScript框架都针对特定的用途开发而且已经得到了"验证",所以直接使用它们就比自己从头实现所需要的功能显得更为合适.然而,伴随着应用的复杂度不断上升,写出干净.低耦合.可维护的代码变得越来越重要.在这篇文章里,我将解释RequireJS框架如何帮助应用开发者写出