hibernate复习4 延迟加载2--集合

1.在Hibernate的延迟加载机制中,针对集合类型的应用,意义是最为重大的,因为这有可能使性能得到大幅 度的提高,为此Hibernate进行了大量的努力,其中包括对JDK Collection的独立实现,我们在一对多关联中,定义的用来容纳关联对象的Set集合,并不是java.util.Set类型或其子类型,而是 net.sf.hibernate.collection.Set类型,通过使用自定义集合类的实现,Hibernate实现了集合类型的延迟加载。为了 对集合类型使用延迟加载,我们必须如下配置我们的实体类的关于关联的部分:

-----------------------------

 <set name="players"
            lazy="true"
            inverse="true">
            <key>
                <column name="cid" not-null="true" />
            </key>
            <one-to-many class="com.fly.entity.Player" />
        </set>

------------------------------

javacode:

-----------------------------

public void testOnetoMany(){
        //火箭队
        Captial captial =
            (Captial) this.getSession().load(Captial.class, 1); <1>
        System.out.println("captial.name:"+captial.getName());<2>
       
        Collection player= captial.getPlayers();
       
        Iterator it = player.iterator();
       
        while(it.hasNext()){
            Player p =(Player) it.next();
            System.out.println("队员:"+p.getPname());
        }
    }
   
    public static void main(String[] args) {
        TestMany test1=new TestMany();
        test1.testOnetoMany();
        System.out.println("...");
    }

-----------------------------------------------------------------

当程序执行到(1)处时,这时并不会发起对关联数据的查询来加载关联数据,只有运行到(2)处时,真正的数据读取操作才会开始,这时Hibernate会根据缓存中符合条件的数据索引,来查找符合条件的实体对象。

这里我们引入了一个全新的概念——数据索引,下面我们首先将接一下什么是数据索引。在 Hibernate中对集合类型进行缓存时,是分两部分进行缓存的,首先缓存集合中所有实体的id列表,然后缓存实体对象,这些实体对象的id列表,就是 所谓的数据索引。当查找数据索引时,如果没有找到对应的数据索引,这时就会一条select SQL的执行,获得符合条件的数据,并构造实体对象集合和数据索引,然后返回实体对象的集合,并且将实体对象和数据索引纳入Hibernate的缓存之 中。另一方面,如果找到对应的数据索引,则从数据索引中取出id列表,然后根据id在缓存中查找对应的实体,如果找到就从缓存中返回,如果没有找到,在发 起select SQL查询。在这里我们看出了另外一个问题,这个问题可能会对性能产生影响,这就是集合类型的缓存策略。


--------------------------------------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值