<menu id="a2esi"><strong id="a2esi"></strong></menu>
  • <nav id="a2esi"></nav>
    學校總部  | 設為首頁 | 加入收藏 | 官方微信
    內威培訓
    打造“培訓+就業”一站式服務品牌!
    banner1
    • Python+AI工程師
    • Web前端工程師
    • Java軟件開發工程師

    首頁>>學員天地

    HibernateTemplate常用方法
    編輯:simon  閱讀:2731次  發布:14-04-03

    HibernateTemplate提供非常多的常用方法來完成基本的操作,比如通常的增加、刪除、修改、查詢等操作,Spring2.0更增加對命名SQL查詢的支持,也增加對分頁的支持。大部分情況下,使用Hibernate的常規用法,就可完成大多數DAO對象的CRUD操作。
    1、常用方法:
       1)void delete(Object entity):刪除指定持久化實例
       2)deleteAll(Collection entities):刪除集合內全部持久化類實例
       3)find(String queryString):根據HQL查詢字符串來返回實例集合
       4)findByNamedQuery(String queryName):根據命名查詢返回實例集合
       5)get(Class entityClass, Serializable id):根據主鍵加載特定持久化類的實例
       6)load(Class entityClass, Serializable id)
       7)save(Object entity):保存新的實例
       8)saveOrUpdate(Object entity):根據實例狀態,選擇保存或者更新
       9)update(Object entity):更新實例的狀態,要求entity是持久狀態
       10)setMaxResults(int maxResults):設置分頁的大小

    2、應用示例
       1)get/load存取單條數據
       public Teacher getTeacherById(Long id) {
          return (Teacher)this.hibernateTemplate.get(Teacher.class, id);
       }
       public Teacher getTeacherById(Long id) {
          return (Teacher)this.hibernateTemplate.load(Teacher.class, id);
       }
       2)find/iterate查詢操作
       public Iterator getTeachersByAge(int age) {
          Iterator iterator = null;
          //使用find方法
         List list = (List)this.hibernateTemplate().find("from Teacher t where t.age>?",new Integer(age)); 
         iterator = list.iterator();
         //使用iterator方法
         iterator = this.hibernateTemplate().iterate("from Teacher t where t.age>?", new Integer(age));
         return iterator;
        }
        find和iterator的區別主要是iterate采用了N+1次查詢,對于大批量查詢,比如查詢10000條記錄,那么iterate就要執行10000+1次查詢,find和iterate應根據具體的實際情況來使用,對于頻繁的寫操作對象,應使用find查詢,而對于一些只讀的數據對象,應使用iterate操作,因為iterate操作使用了Hibernate的緩存機制
       3)save/update/saveOrUpdate/delete 保存/更新/刪除操作
       public void save(Teacher teacher) {
          this.hibernateTemplate.save(teacher);
       }
       public void update(Teacher teacher) {
          this.hibernateTemplate.update(teacher);
       }
       public void update(Teacher teacher) {
          this.hibernateTemplate.saveOrUpdate(teacher);
       }
       public void update(Teacher teacher) {
          this.hibernateTemplate.delete(teacher);
       }
       4)bulkUpdate批量刪除或者更新
        bulkUpdate提供了批量刪除和更新,直接轉換為相應的update/delete SQL進行批量刪除和更新
        public void batchDelete(String name, int age)
       {
           this.hibernateTemplate.bulkUpdate("delete Teacher where name=? and age = ?", new Object[]{name, age});
       }
       public void batchDelete(String name, String newName) {
          this.hibernateTemplate.bulkUpdate("update Teacher set name=? where name=?", new Object[]{newName, name});
       }
       此時要注意的一個問題是,使用bulkUpdate操作,必須手工清除相關對象在Hibernate中的緩存(包括一級緩存和二級緩存)



    上一篇: Asp.Net中FileUpload控件用法   下一篇: JAVA面試題2
    返回列表
    網絡大專、自考本科,學歷輕松拿!
    ©2016-2020 上海內威職業技能培訓學校 版權所有
    普陀區武寧路1500號中樓2-3層(郵編:200062)
    咨詢:021-62434966  合作:021-13371929650  就業:021-62434966  傳真:  電郵:service@snetway.com
    《中華人民共和國電信與信息服務業務》經營許可證滬ICP備15002602號 
    <menu id="a2esi"><strong id="a2esi"></strong></menu>
  • <nav id="a2esi"></nav>
    本溪娱网棋牌