<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    hiernate抓取策略和批量策略

    hibernate中設置:

    查詢數據庫每次最多返回50條結果:

    <property name=”hibernate.jdbc.fetch_size”>50</property>

    30條更新數據庫一次:

    <property name= ”hibernatejdbc.batch_size”>30</property>

     但不是所有的數據庫都支持的,sqlServer orcale 都支持的。

     

    一.hibernate 抓取策略(Fetch) 單端代理批量抓取

     

    1.fetch=”select” 關聯實體

    //fetch 默認是select

    <many-to-one name="businessId" column="business_id" insert="true" update="true" fetch="select">

     

    Student student = (Student)session.load(Student.class,1);

    System.out.println(student.getName());

    System.out.println(student.getClasses().getName()); //多對一中的屬性班級,獲取班級名稱

     

    Fetch=”select” ,上面程序會發2條sql語句,第二條發送一條select語句抓取當前對象關聯實體或集合 (這里指是班級名稱)

     

    2.fetch=” join” 關聯實體

    //fetch 設置成 join

    <many-to-one name="businessId" column="business_id" insert="true" update="true"

    fetch=" join ">

     

    Student student = (Student)session.load(Student.class,1);

    System.out.println(student.getName());

    System.out.println(student.getClasses().getName()); //多對一中的屬性班級,獲取班級名稱

     

    fetch=” join” , 上面程序會發1條sql語句, hibernate會通過select使用外鏈接來加載其關聯實體或集合,此時lazy會失效 

     

    二.hibernate 抓取策略(Fetch) 集合代理批量抓取

     

    1.     fetch=”select”

    //fetch 默認是select

    <set name="students" inverse="true" cascade="all" fetch="select">

                <key column="classid" />

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

    </set>

     

    Classes cla = (Classes)session.load(Classes.class,1);

    System.out.println(cla.getName());

    for(Iterator iter = cla.getStudents().iterator();iter.hasNext();){

           Student student = (Student)iter.next();

           System.out.println(student.getName());

    }

     

    fetch=”select” ,上面程序用到了就發sql語句,第二從循環中發了N條,如果:fetch=”subselect”,則只是發送一條語句,見下面

     

    2 fetch=”join”

    //fetch 設置成join

    <set name="students" inverse="true" cascade="all" fetch="join">

                <key column="classid" />

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

    </set>

     

    Classes cla = (Classes)session.load(Classes.class,1);

    System.out.println(cla.getName());

    for(Iterator iter = cla.getStudents().iterator();iter.hasNext();){

           Student student = (Student)iter.next();

           System.out.println(student.getName());

    }

     

    Fetch=”select” ,上面程序只發了一條sql語句

     

     

    三.hibernate 抓取策略(Fetch) 集合代理批量抓取

     

    2.     fetch=”subselect”

    //fetch設置成subselect

    <set name="students" inverse="true" cascade="all" fetch="subselect">

                <key column="classid" />

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

    </set>

     

    List classesList = session.createQuery(“select c from Classes c where c.id in(1,2,3)”);

    for(Iterator iter=classesList.iterator();iter.hasNext();){

           Classess classess = (Classess)iter.next();

           System.out.println(“classes.name=”+ classes.getName());

           for(Iterator iter1 = classess.getStudents().iterator();iter1.hasNext();){

                  Student student = (Student)iter1.next();

                  System.out.println(student.getName());

    }

    }

     

    Fetch=”subselct” ,另外發送一條select語句抓取在前面查詢到的所有實體對象的關聯集合

     

     

    四.hibernate 批量策略batch-size屬性,可以批量加載實體類,

    參見Classes.hbm.xml,同時集合也可以是使用,如:

     <set name="students" inverse="true" cascade="save-update" batch-size=”5”>

     

    在配置文件hbm.xml 設置中:

    <class name="com.Classes " table="tb_classes" batch-size=”3”>

     

    List students = session.createQuery(“select s from Student s where s.id in(:ids)”).setParameterList(“:ids”,new Object[]{1,11,21,31,41,51,61,71,81,91}).list();

     

    for(Iterator iter=students.iterator();iter.hasNext();){

           Student student = (Sutdent)iter.next();

           System.out.println(student.getName());

           System.out.println(student.getClassess().getName());

     

    }

     

    當第二個for循環時,每次加載 之前設置的 數量 實體對象,  如:現在設置3,那么當Iterator iter=students.iterator();iter.hasNext();時候,他會查詢出3個student對象

    posted on 2009-04-06 11:57 胡鵬 閱讀(458) 評論(0)  編輯  收藏 所屬分類: hibernate

    導航

    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲电影中文字幕| 亚洲高清国产AV拍精品青青草原| **毛片免费观看久久精品| 亚洲国产精品无码中文字| 三上悠亚电影全集免费| 国产亚洲无线码一区二区| 永久免费AV无码网站国产| 亚洲国产另类久久久精品小说| 三年片在线观看免费西瓜视频 | 日本高清免费观看| 免费黄色app网站| 伊人久久大香线蕉亚洲| 国产精品视频全国免费观看| 免费视频爱爱太爽了| 亚洲综合另类小说色区| 成年免费a级毛片免费看无码| 亚洲无人区一区二区三区| 午夜理伦剧场免费| 亚洲成a人片在线观看老师| 亚洲成a人片7777| 曰批全过程免费视频在线观看| 亚洲精品V欧洲精品V日韩精品| 免费在线中文日本| 337p日本欧洲亚洲大胆艺术| 蜜桃传媒一区二区亚洲AV | 亚洲色精品88色婷婷七月丁香| 日本免费中文视频| 亚洲中文字幕无码一去台湾| 免费国产小视频在线观看| 亚洲AV男人的天堂在线观看| 久久国产乱子伦精品免费看| 亚洲国产成人无码av在线播放| 国产又粗又长又硬免费视频| 野花香在线视频免费观看大全| 亚洲一区二区三区无码国产| 99国产精品视频免费观看| 亚洲熟妇无码八V在线播放| 久久精品亚洲福利| 亚洲人成网站免费播放| 一级特黄a大片免费| 免费欧洲美女牲交视频|