<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    package org.huy.fram.hibernate;

    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.util.List;

    import org.hibernate.Query;
    import org.hibernate.Session;

    /**
     * 
     * <p>
     * Title:[Hibernate Data Access Object Support]
     * </p>
     * <p>
     * Description: [操作數據庫支持類,其它DAO可能繼承該類]
     * </p>
     * <p>
     * Copyright 2009 Huyvanpull Co., Ltd.
     * </p>
     * <p>
     * All right reserved.
     * </p>
     * 
     * 
    @version 1.0
     * 
     * <p>
     * Created by [Huyvanpull] [Jun 26, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改時間]
     * </p>
     * 
     
    */

    public class HibDAOSupport
    {
        
    /** DAO的操作po的類型 */
        
    private Class<?> claz = null;
        
        
    /** 構造方法,且只應提供此種構造方法 */
        
    public HibDAOSupport(Class<?> claz)
        
    {
            
    this.claz = claz;
        }

        
        
    /**
         * 
         * <p>
         * Description:[加載對象,返回代理實例]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param id
         * 
    @return
         
    */

        
    public Object load(Serializable id)
        
    {
            Object entity 
    = null;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                entity 
    = session.load(this.claz, id);
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entity;
        }

        
        
    /**
         * 
         * <p>
         * Description:[得到對象,返回實體類]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param id
         * 
    @return
         
    */

        
    public Object get(Serializable id)
        
    {
            Object entity 
    = null;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                entity 
    = session.get(this.claz, id);
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entity;
        }

        
        
    /**
         * 
         * <p>
         * Description:[把實例保存到數據庫]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param entity
         * 
    @return
         
    */

        
    public Object save(Object entity)
        
    {
            
    try
            
    {
                
    /** 如果entity不是claz的實例,此處會拋出異常,下面代碼不會執行 */
                
    this.isInstance(entity);
                Session session 
    = HibernateSessionFactory.getSession();
                session.save(entity);
                
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entity;
        }

        
        
    /**
         * 
         * <p>
         * Description:[把實例保存到數據庫]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param entity
         * 
    @return
         
    */

        
    public Object update(Object entity)
        
    {
            
    try
            
    {
                
    /** 如果entity不是claz的實例,此處會拋出異常,下面代碼不會執行 */
                
    this.isInstance(entity);
                Session session 
    = HibernateSessionFactory.getSession();
                session.update(entity);
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entity;
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據實列刪除對象]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param object
         * 
    @return
         
    */

        
    public Object delete(Object entity)
        
    {
            
    try
            
    {
                
    /** 如果entity不是claz的實例,此處會拋出異常,下面代碼不會執行 */
                
    this.isInstance(entity);
                Session session 
    = HibernateSessionFactory.getSession();
                session.delete(entity);
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entity;
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據id刪除對象]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param id
         
    */

        
    public void deleteById(Serializable id)
        
    {
            delete(load(id));
        }

        
        
    /**
         * 
         * <p>
         * Description:[不附加條件查詢所有對象]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @return
         
    */

        
    public List<?> findAll()
        
    {
            String hsql 
    = "from ".concat(this.getEntityClassName());
            
    return this.find(hsql, 00);
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據hsql查詢數據]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 30, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param hsql
         * HSQL
         * 
    @param beginIndex
         * 查詢起始位置
         * 
    @param pageSize
         * 每頁長度
         * 
    @return
         
    */

        
    public List<?> find(final String hsql, final int beginIndex,
                
    final int pageSize)
        
    {
            List
    <?> entityLst = null;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                Query query 
    = session.createQuery(hsql);
                
    if (beginIndex != 0)
                
    {
                    query.setFirstResult(beginIndex);
                }

                
    if (pageSize != 0)
                
    {
                    query.setMaxResults(pageSize);
                }

                entityLst 
    = query.list();
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entityLst;
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據SQL查詢數據]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 30, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param sql
         * SQL
         * 
    @param beginIndex
         * 查詢起始位置
         * 
    @param pageSize
         * 每頁長度
         * 
    @return
         
    */

        
    public List<?> findBySql(final String sql, final int beginIndex,
                
    final int pageSize)
        
    {
            List
    <?> entityLst = null;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                Query query 
    = session.createSQLQuery(sql);
                
    if (beginIndex != 0)
                
    {
                    query.setFirstResult(beginIndex);
                }

                
    if (pageSize != 0)
                
    {
                    query.setMaxResults(pageSize);
                }

                entityLst 
    = query.list();
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return entityLst;
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據HQL統計合符條件的數目]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param hql
         * 
    @return
         
    */

        
    public int count(final String hql)
        
    {
            
    int count = 0;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                Query query 
    = session.createQuery(hql);
                count 
    = ((Integer) query.uniqueResult()).intValue();
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return count;
        }

        
        
    /**
         * 
         * <p>
         * Description:[根據原生SQL統計合符條件的數目]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param sql
         * 
    @return
         
    */

        
    public int countBySql(final String sql)
        
    {
            
    int count = 0;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                Query query 
    = session.createSQLQuery(sql);
                count 
    = ((BigDecimal) query.uniqueResult()).intValue();
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return count;
        }

        
        
    /**
         * 
         * <p>
         * Description:[執行原生SQL,返回更改的條數]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param sql
         * 
    @return
         
    */

        
    public int executeSQL(final String sql)
        
    {
            
    int updateCount = 0;
            
    try
            
    {
                Session session 
    = HibernateSessionFactory.getSession();
                Query query 
    = session.createSQLQuery(sql);
                updateCount 
    = query.executeUpdate();
            }

            
    catch (RuntimeException re)
            
    {
                
    throw re;
            }

            
    return updateCount;
        }

        
        
    /**
         * 
         * <p>
         * Description:[如果不是claz的實例,則拋出異常]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @param entity
         
    */

        
    private void isInstance(Object entity)
        
    {
            
    if (!this.claz.isInstance(entity))
            
    {
                
    /** 如果所傳的對象不是claz的實例,則拋出異常由上一級進行處理 */
                StringBuffer exceptionInfo 
    = new StringBuffer(512);
                exceptionInfo.append(
    "entity is not instance of ");
                exceptionInfo.append(
    this.claz.getName());
                exceptionInfo.trimToSize();
                
    throw new RuntimeException(exceptionInfo.toString());
            }

        }

        
        
    /**
         * 
         * <p>
         * Description:[本方法用于得到claz的名字]
         * </p>
         * <p>
         * Created by [Huyvanpull] [Jun 26, 2009]
         * </p>
         * <p>
         * Midified by [修改人] [修改時間]
         * </p>
         * 
         * 
    @return
         
    */

        
    private String getEntityClassName()
        
    {
            String name 
    = this.claz.getName();
            
    /** 得到類名 */
            
    return name.substring(name.lastIndexOf("."+ 1, name.length());
        }

    }


        DAO繼承該類,幾乎不用寫代碼了.
    posted on 2009-06-29 09:52 HUIKK 閱讀(598) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕亚洲专区| 人妻18毛片a级毛片免费看| 久久综合九九亚洲一区| 国产成人一区二区三区免费视频| 国产一级淫片a免费播放口| 美女黄频免费网站| ASS亚洲熟妇毛茸茸PICS| 亚洲一区二区三区高清| 亚洲国产三级在线观看| 亚洲人妻av伦理| 国产91久久久久久久免费| 国产精品美女午夜爽爽爽免费| 99久久久国产精品免费蜜臀| 久久精品免费网站网| 特级做a爰片毛片免费看| 亚洲中文字幕久久无码| 亚洲伊人久久大香线蕉| 亚洲福利一区二区三区| 亚洲图片在线观看| 亚洲嫩模在线观看| 亚洲国产精品久久久久网站| 亚洲精品乱码久久久久久自慰| 亚洲综合色区在线观看| 亚洲综合另类小说色区色噜噜| 亚洲黄黄黄网站在线观看| 国产精品视_精品国产免费| 午夜毛片不卡免费观看视频| 免费人成视频在线| 久久久久国色AV免费观看性色| 99久久99久久精品免费看蜜桃| 国产高清不卡免费在线| 性xxxxx免费视频播放| 97在线观看永久免费视频| 4虎永免费最新永久免费地址| 日本免费人成在线网站| 国产成人福利免费视频| 免费无码AV片在线观看软件| 免费精品人在线二线三线区别| 夜夜嘿视频免费看| 日本中文一区二区三区亚洲| 亚洲精品tv久久久久|