本文向大家介绍Hibernate集合类型,可能好多人还不了解Hibernate集合类型,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。下面我们就分别介绍这些种类的延迟加载的细节。
Hibernate集合类型的延迟加载
在Hibernate的延迟加载机制中,针对集合类型的应用,意义是最为重大的,因为这有可能使性能得到大幅度的提高,为此Hibernate进行了大量的努力,其中包括对JDK Collection的独立实现,我们在一对多关联中,定义的用来容纳关联对象的Set集合,并不是java.util.Set类型或其子类型,而是net.sf.hibernate.collection.Set类型,通过使用自定义集合类的实现,Hibernate实现了集合类型的延迟加载。为了对Hibernate集合类型使用延迟加载,我们必须如下配置我们的实体类的关于关联的部分:
- <hibernate-mapping>
- <class name=”com.neusoft.entity.User” table=”user”>
- …
- <set name=”addresses” table=”address” lazy=”true” inverse=”true”>
- <key column=”user_id”/>
- <one-to-many class=”com.neusoft.entity.Arrderss”/>
- </set>
- </class>
- </hibernate-mapping>
通过将<set>元素的lazy属性设置为true来开启Hibernate集合类型的延迟加载特性。我们看下面的代码:
- User user=(User)session.load(User.class,”1”);
- Collection addset=user.getAddresses();
- Iterator it=addset.iterator();
- while(it.hasNext()){
- Address address=(Address)it.next();
- System.out.println(address.getAddress());
- }
当程序执行到第二行时,这时并不会发起对关联数据的查询来加载关联数据,只有运行到第三行时,真正的数据读取操作才会开始,这时Hibernate会根据缓存中符合条件的数据索引,来查找符合条件的实体对象。
【编辑推荐】