隨筆-124  評論-49  文章-56  trackbacks-0

          1 ,void delete ( Object entity ) : 刪除指定持久化實例
          public void removePerson( int personid)
          {
          //先加載特定的實例
          Object p = getHibernateTemplate().load( Person.class , new Integer( personid));
          //刪除特定實例
          getHibernateTemplate().delete (p);
          }
          2 ,deleteAll ( Collection entities ) : 刪除集合內全部持久化類實例

          3 ,find ( String queryString ) : 根據HQL查詢字符串來返回實例集合
          Public List getPersons()
          {
          //返回Person的全部實例
          return getHibernateTemplate().find ( " from Person " );
          }

          4 ,findByNamedQuery ( String queryName) : 根據命名查詢返回實例集合

          5 ,get ( Class entityClass , Serializable id ) : 根據主鍵加載特定持久化類的實例
          public Person getPerson()
          {  
          //返回特定主鍵對應的Person實例
          return (Person)getHibernateTemplate().get (Person.class , new Integer(person id));
          }
          6 ,save ( Object entity ) : 保存新的實例

          7 ,saveOrUpdate ( Object entity ): 根據實例狀態,選擇保存或者更新

          8 ,update ( Object entity ) : 更新實例的狀態,要求entity是持久狀態

          9 ,setMaxResults ( int maxResults ) : 設置分頁的大小。




          HibernateTemplate的 更靈活 的用法 :
          更靈活的訪問是通過以下兩個方法完成的:
          Object execute ( HibernateCallback action ) ;
          List execute ( HibernateCallback action );
          這兩個方法都需要一個HibernateCallback的實例,可以在任何有效的hibernate數據訪問中使用。用法靈活,解決了Spring封裝Hibernate后靈活性不足的缺陷。 HibernateCallback 是一個接,該接口只有一個方doInHibernate ( org.hibernate.Session session ), 該方法只有一個參數Session.
          public class PersonDaolmpl implements PersonDao
          {
          // 私有實例變量保存SessionFactory
          private SessionFactory sessionFactory;
          // 依賴注入必需的setter 方法
          public void setSessionFactory(SessionFactory sessionFactory)
          {
          this.sessionFactory = sessionFactory;
          }

          /**
          *通過人名查找所有匹配該名的Person 實例
          @param name 匹配的人名
          @return 匹配該任命的全部Person 集合
          */

          public List findPersonsByName(final String name)
          //創建HibernateTemplate實例
          HibernateTemplate hibernateTemplate = new HibernateTemplate(this.sessionFactory);
          //返回HibernateTemplate的execute 的結果
          return (List) hibernateTemplate.execute (
          //創建匿名內部類
          new HibernateCallback ()
          public Object doInHibernate (Session session)
          throws Hibernate Exception
          {
          //使用條件查詢的方法返回
          List result = session.createCriteria(Person.class)
          .add(Restrictions.like(
          "name", name+ " %") .list ( ) ;
          return result;
          }
           ) :
          }

          }

          注意:在方法doInHibernate內可以訪問到Session,該session是完全綁定到當前線程的Session實例,保證在對于復雜的持久層訪問時,依然可以使用Hibernate的訪問方式。
          posted on 2009-11-03 17:20 junly 閱讀(5344) 評論(3)  編輯  收藏 所屬分類: hibernate/orm

          評論:
          # re: hibernate基礎-HibernateTemplate 2012-11-14 23:33 | asdf
          dsf  回復  更多評論
            
          # re: hibernate基礎-HibernateTemplate 2012-11-14 23:34 | asdf
          dfgsdfgdsfg  回復  更多評論
            
          # re: hibernate基礎-HibernateTemplate 2012-11-23 18:42 | Super9527
          謝謝了  回復  更多評論
            
          主站蜘蛛池模板: 祁阳县| 开化县| 乌兰察布市| 天台县| 临江市| 司法| 峡江县| 自治县| 昌邑市| 乌什县| 井冈山市| 石家庄市| 宿迁市| 通州市| 南雄市| 咸阳市| 和政县| 贡山| 东光县| 马公市| 乐亭县| 聂拉木县| 南澳县| 阳西县| 普格县| 鄂州市| 双城市| 中卫市| 海南省| 修水县| 丰原市| 石渠县| 崇礼县| 奉节县| 枣阳市| 方城县| 家居| 兰溪市| 柳江县| 平果县| 乌什县|