秋風的蕭瑟 又見湖邊木葉飛

          歡迎來到梁良 | LonBlog,這里記錄下了我生活點點滴滴。

          Hibernate DAO中的幾個方法

          * save()方法提供了向數據庫中添加數據的功能,但只能添加,這個DAO沒有生成Update()的方法
          * 但你可以簡單的八save()方法改稱具有Update功能:將getSession().save * (transientInstance);這句改成
          * getSession().merge(transientInstance);或者getSession().saveOrUpdate
          *  (transientInstance); 

          public void save(User transientInstance) {
            log.debug("saving User instance");
            try {
             Session session=getSession();
             Transaction tx=session.beginTransaction();
             session.save(transientInstance);
             tx.commit();
             session.close();
             log.debug("save successful");
            } catch (RuntimeException re) {
             log.error("save failed", re);
             throw re;
            }
           }


          delete()方法用來刪除的 實際上我們會用下邊的這個方法進行刪除

          public void delete(Integer id){
            log.debug("deleting User instance…");
            User user=findById(id);
            delete(user);
           }
           
           public void delete(User persistentInstance) {
            log.debug("deleting User instance");
            try {
             Session session=getSession();
             Transaction tx=session.beginTransaction();
             session.delete(persistentInstance);
             tx.commit();
             session.close();
             log.debug("delete successful");
            } catch (RuntimeException re) {
             log.error("delete failed", re);
             throw re;
            }
           }

          根據編號進行查找

           public User findById(java.lang.Integer id) {
            log.debug("getting User instance with id: " + id);
            try {
             User instance = (User) getSession().get("hbm.User", id);
             return instance;
            } catch (RuntimeException re) {
             log.error("get failed", re);
             throw re;
            }
           }

          findByExample()方法實現的功能相當于"select * from Usertable"實現的功能就是查詢所有 數據.

           public List findByExample(User instance) {
            log.debug("finding User instance by example");
            try {
             List results = getSession().createCriteria("hbm.User").add(
               Example.create(instance)).list();
             log.debug("find by example successful, result size: "
               + results.size());
             return results;
            } catch (RuntimeException re) {
             log.error("find by example failed", re);
             throw re;
            }
           }

          findByProperty()方法用來靈活的提供一種按條件查詢的方法,你可以自己定義要按什么樣的方 式查詢.

           public List findByProperty(String propertyName, Object value) {
            log.debug("finding User instance with property: " + propertyName
              + ", value: " + value);
            try {
             String queryString = "from User as model where model."
               + propertyName + "= ?";
             Query queryObject = getSession().createQuery(queryString);
             queryObject.setParameter(0, value);
             return queryObject.list();
            } catch (RuntimeException re) {
             log.error("find by property name failed", re);
             throw re;
            }
           }

           public List findByName(Object name) {
            return findByProperty(NAME, name);
           }

           public List findBySex(Object sex) {
            return findByProperty(SEX, sex);
           }

           public List findByAge(Object age) {
            return findByProperty(AGE, age);
           }

           public List findAll() {
            log.debug("finding all User instances");
            try {
             String queryString = "from User";
             Query queryObject = getSession().createQuery(queryString);
             return queryObject.list();
            } catch (RuntimeException re) {
             log.error("find all failed", re);
             throw re;
            }
           }

          將傳入的detached狀態的對象的屬性復制到持久化對象中,并返回該持久化對象  如果該session中沒有關聯的持久化對象,加載一個,如果傳入對象未保存,保存一個副本并作為持久對象返回,傳入對象依然保持detached狀態。 

          可以用作更新數據

           public User merge(User detachedInstance) {
            log.debug("merging User instance");
            try {

              Session session=getSession();
             Transaction tx=session.beginTransaction();
             
             User result = (User) session.merge(detachedInstance);
             tx.commit();
             session.close();
             log.debug("merge successful");
             return result;
            } catch (RuntimeException re) {
             log.error("merge failed", re);
             throw re;
            }
           }

          將傳入的對象持久化并保存。 如果對象未保存(Transient狀態),調用save方法保存。如果對象已保存(Detached狀態),調用update方法將對象與Session重新關聯。

           public void attachDirty(User instance) {
            log.debug("attaching dirty User instance");
            try {
             getSession().saveOrUpdate(instance);
             log.debug("attach successful");
            } catch (RuntimeException re) {
             log.error("attach failed", re);
             throw re;
            }
           }

          將傳入的對象狀態設置為Transient狀態 

           public void attachClean(User instance) {
            log.debug("attaching clean User instance");
            try {
             getSession().lock(instance, LockMode.NONE);
             log.debug("attach successful");
            } catch (RuntimeException re) {
             log.error("attach failed", re);
             throw re;
            }
           }

          posted on 2010-06-04 11:53 梁良 閱讀(397) 評論(0)  編輯  收藏 所屬分類: SSH


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          公告

              歡迎光臨

          常用鏈接

          隨筆分類

          隨筆檔案

          相冊

          .我的網站.

          友情博客

          開源社區

          科技博客

          資料網站

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          Powered by:
          LonLeung
          Copyright © 梁良

          本頁生成時間:毫秒

          主站蜘蛛池模板: 皋兰县| 邹平县| 苍梧县| 清丰县| 新余市| 柳林县| 永川市| 正镶白旗| 虹口区| 贵南县| 南川市| 雅江县| 威宁| 泰和县| 常山县| 兴国县| 乐安县| 高阳县| 东乡族自治县| 竹溪县| 淮北市| 怀来县| 册亨县| 罗源县| 塔城市| 乃东县| 长岭县| 昂仁县| 商都县| 中方县| 安塞县| 闵行区| 三门峡市| 西和县| 潜江市| 黑水县| 弥渡县| 罗城| 都安| 手机| 奈曼旗|