您的位置:首页 > 其它

hibernate检索的使用

2016-07-25 13:07 127 查看
1.hibernate中检索主要有以下:

   lazy=true|false|extra

   fetch=select  subselect  join迫切的左外链接

   batch-size 检索的数量

   cascade="all" 级联操作

2.第一种lazy的使用: 

2.1 Classes.hbm.xml

<set name="stus"  lazy="false" >

           <key column="class_id"></key>

           <one-to-many class="Student"/>

        </set>

     </class>

</hibernate-mapping>

2.2 使用lazy="false"时效果如下;

Hibernate:

    select

        student0_.ID as ID1_1_0_,

        student0_.NAME as NAME2_1_0_,

        student0_.class_id as class_id3_1_0_

    from

        STUDENT student0_

    where

        student0_.ID=?

Hibernate:

    select

        classes0_.ID as ID1_0_0_,

        classes0_.NAME as NAME2_0_0_

    from

        CLASSES classes0_

    where

        classes0_.ID=?

Hibernate:

    select

        stus0_.class_id as class_id3_0_1_,

        stus0_.ID as ID1_1_1_,

        stus0_.ID as ID1_1_0_,

        stus0_.NAME as NAME2_1_0_,

        stus0_.class_id as class_id3_1_0_

    from

        STUDENT stus0_

    where

        stus0_.class_id=?

Student [id=1, name=tom, cls=Classes [id=1, name=大数据0302]]

2.2 使用lazy="true"时,效果如下;

Hibernate:

    select

        student0_.ID as ID1_1_0_,

        student0_.NAME as NAME2_1_0_,

        student0_.class_id as class_id3_1_0_

    from

        STUDENT student0_

    where

        student0_.ID=?

Hibernate:

    select

        classes0_.ID as ID1_0_0_,

        classes0_.NAME as NAME2_0_0_

    from

        CLASSES classes0_

    where

        classes0_.ID=?

Student [id=1, name=tom, cls=Classes [id=1, name=大数据0302]]

2.3 使用lazy="extra"时,效果如下;

Hibernate:

    select

        student0_.ID as ID1_1_0_,

        student0_.NAME as NAME2_1_0_,

        student0_.class_id as class_id3_1_0_

    from

        STUDENT student0_

    where

        student0_.ID=?

Hibernate:

    select

        classes0_.ID as ID1_0_0_,

        classes0_.NAME as NAME2_0_0_

    from

        CLASSES classes0_

    where

        classes0_.ID=?

Student [id=1, name=tom, cls=Classes [id=1, name=大数据0302]]

3 第二种 fetch的使用

3.1 Classes.hbm.xml

<set name="stus"  fetch="join" >

     <key column="class_id"></key>

      <one-to-many class="Student"/>

</set>

3.2 fetch="join"时:

Hibernate:

    select

        student0_.ID as ID1_1_0_,

        student0_.NAME as NAME2_1_0_,

        student0_.class_id as class_id3_1_0_

    from

        STUDENT student0_

    where

        student0_.ID=?

Hibernate:

    select

        classes0_.ID as ID1_0_1_,

        classes0_.NAME as NAME2_0_1_,

        stus1_.class_id as class_id3_0_3_,

        stus1_.ID as ID1_1_3_,

        stus1_.ID as ID1_1_0_,

        stus1_.NAME as NAME2_1_0_,

        stus1_.class_id as class_id3_1_0_

    from

        CLASSES classes0_

    left outer join

        STUDENT stus1_

            on classes0_.ID=stus1_.class_id

    where

        classes0_.ID=?

Student [id=1, name=tom, cls=Classes [id=1, name=大数据0302]]

3.2 fetch="select"时:

ibernate:

    select

        student0_.ID as ID1_1_0_,

        student0_.NAME as NAME2_1_0_,

        student0_.class_id as class_id3_1_0_

    from

        STUDENT student0_

    where

        student0_.ID=?

Hibernate:

    select

        classes0_.ID as ID1_0_0_,

        classes0_.NAME as NAME2_0_0_

    from

        CLASSES classes0_

    where

        classes0_.ID=?

Student [id=1, name=tom, cls=Classes [id=1, name=大数据0302]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: