hibernate 一級緩存

          1 hibernate 一級緩存
          Session?
          ? evict(Object o) 從緩存中清除指定的持久化對象
          ? clear()???????? 清除緩存中所有對象
          2 批量更新于批量刪除
          ? 1) 批量更新
          ?? Iterator customers=session.find("from Customer c where c.age>0");
          ?? while(customers.hasNext()){
          ???? Customer customer=(Customer)customers.next();
          ???? customer.setAge(customer.getAge()+1);
          ?? }
          ?? tx.commit();
          ?? session.close();

          ? 缺點:內存中加載了大量數據
          ??????? 執行了多次update 語句
          ?
          ?? 改進
          ?? Iterator customers=session.find("from Customer c where c.age>0");
          ?? while(customers.hasNext()){
          ???? Customer customer=(Customer)customers.next();
          ???? customer.setAge(customer.getAge()+1);
          ???? session.flush();
          ???? session.evict(customer);
          ?? }
          ?? tx.commit();
          ?? session.close();
          ?? 遺留問題
          ?? 執行了多次update 語句
          ??
          ?? 采用jdbc api 進行調用
          ?? Connection con=session.connection();
          ?? PrepareStatement stmt=con.prepareStatement("update customers set age=age+1 where age>0");
          ?? stmt.executeUpdate();
          ?? tx.commit();
          ?? 另外,也可以調用底層的存儲過程進行批量更新
          ?? create or replace procedure batchUpdateCustomer(p_age,in number) as
          ?? begin
          ????? update customer set age=age+1 where age>p_age;
          ?? end;
          ??
          ?? tx=session.beginTransaction();
          ?? Connection con=session.connection();
          ?? CallableStatement cstmt=con.prepareCall(batchUpdateCustomer);
          ?? cstmt.setInt(1,0);
          ?? cstmt.eqecuteUpdate();
          ?? tx.commit();
          ?? 2) 批量數據的刪除
          ??? session.delete("from? Customer c where c.age>0");
          ??? 實際調用的過程
          ??? session * from Customer where age>0;
          ??? 在把所有數據加載到內存之后執行多條delete 語句
          ??? delete from customer where id=i;
          ???? .......................
          ?? 改進辦法采用jdbc api 進行批量數據的刪除
          ?????
          ?? tx=session.beginTransaction();
          ?? Connection con=session.connection();
          ?? con.execute("delete from customers where age>0");
          ?? tx.commit();

          posted on 2006-09-14 09:22 康文 閱讀(468) 評論(0)  編輯  收藏 所屬分類: java

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 民乐县| 如皋市| 甘南县| 庆元县| 西乌| 巨野县| 清徐县| 瑞安市| 新余市| 南投市| 黔南| 白城市| 禹州市| 永福县| 灵山县| 安陆市| 武陟县| 平陆县| 海门市| 侯马市| 东辽县| 南投市| 那坡县| 栾川县| 南安市| 富蕴县| 福建省| 页游| 吉水县| 阿合奇县| 成都市| 尚义县| 新密市| 肇庆市| 新和县| 彰化市| 滨州市| 四川省| 永寿县| 罗甸县| 石泉县|