这里介绍Hibernate集合类型的延迟加载特性,在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。
本文向咱们介绍Hibernate调集类型,或许好多人还不了解Hibernate调集类型,没有关系,看完本文你必定有不少收成,期望本文能教会你更多东西。
推迟加载机制是为了防止一些无谓的功能开支而提出来的,所谓推迟加载便是当在真实需求数据的时分,才真实履行数据加载操作。在Hibernate中供给了对实体目标的推迟加载以及对调集的推迟加载,另外在Hibernate3中还供给了对特点的推迟加载。下面咱们就别离介绍这些品种的推迟加载的细节。
Hibernate调集类型的推迟加载
在Hibernate的推迟加载机制中,针对调集类型的运用,含义是最为严重的,由于这有或许使功能得到大幅度的进步,为此Hibernate进行了很多的尽力,其间包含对JDK Collection的独立完成,咱们在一对多相关中,界说的用来包容相关目标的Set调集,并不是java.util.Set类型或其子类型,而是net.sf.hibernate.collection.Set类型,经过运用自界说调集类的完成,Hibernate完成了调集类型的推迟加载。为了对Hibernate调集类型运用推迟加载,咱们有必要如下装备咱们的实体类的关于相关的部分:
- <hibernate-mapping>
- <classname=”com.neusoft.entity.User”table=”user”>
- …
- <setname=”addresses”table=”address”lazy=”true”inverse=”true”>
- <keycolumn=”user_id”/>
- <one-to-manyclass=”com.neusoft.entity.Arrderss”/>
- </set>
- </class>
- </hibernate-mapping>
经过将<set>元素的lazy特点设置为true来敞开Hibernate调集类型的推迟加载特性。咱们看下面的代码:
- Useruser=(User)session.load(User.class,”1”);
- Collectionaddset=user.getAddresses();
- Iteratorit=addset.iterator();
- while(it.hasNext()){
- Addressaddress=(Address)it.next();
- System.out.println(address.getAddress());
- }
当程序履行到第二行时,这时并不会建议对相关数据的查询来加载相关数据,只要运转到第三行时,真实的数据读取操作才会开端,这时Hibernate会依据缓存中契合条件的数据索引,来查找契合条件的实体目标。
【修改引荐】
- 解说NHibernate Session
- 简略描绘Hibernate Sample
- Hibernate Annotations保护验证逻辑
- Hibernate ClassValidator实例
- 描绘Hibernate持久性类
知优网 » Hibernate调集类型的推迟加载特性(hibernate 延迟加载)