<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 胡鵬 閱讀(460) 評論(0)  編輯  收藏 所屬分類: hibernate

    導航

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

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 激情内射亚洲一区二区三区| 亚洲国产三级在线观看| 亚洲欧洲日韩国产一区二区三区| 久久久久国产精品免费网站| 久久亚洲国产中v天仙www| 两个人看的www高清免费观看| 亚洲成a人片在线观看无码专区| 免费观看久久精彩视频| 亚洲视频一区调教| 国产又大又粗又长免费视频| 亚洲国产成+人+综合| 99久久综合国产精品免费| 亚洲性无码一区二区三区| 永久免费毛片手机版在线看| 精品久久亚洲一级α| 免费人成视频在线观看不卡| sss在线观看免费高清| 久久亚洲综合色一区二区三区| 69视频在线是免费观看| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲资源最新版在线观看| 免费看韩国黄a片在线观看| 亚洲av永久无码| 亚洲精品无码Av人在线观看国产| 日韩免费的视频在线观看香蕉| 色偷偷亚洲女人天堂观看欧| 亚洲?v无码国产在丝袜线观看 | 中文字幕av免费专区| 亚洲免费在线视频| 天堂在线免费观看中文版| 一级做a爱过程免费视| 久久精品国产亚洲av麻豆| 曰批全过程免费视频在线观看 | 亚洲精品美女久久久久| 国产成人精品男人免费| 99re6在线视频精品免费| 国产人成亚洲第一网站在线播放| 亚洲精品国产福利一二区| 永久黄色免费网站| 无套内谢孕妇毛片免费看看| 亚洲熟妇色自偷自拍另类|