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

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

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

    posts - 167,  comments - 30,  trackbacks - 0

    package com.cns.certservice.dao.impl;

    import org.apache.log4j.Logger;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;

    import com.cns.certservice.exception.DAOException;


    public class HibernateTemplate {

        private HibernateTemplate() {

        }

        /**
         * static final session factory
         */
        private static SessionFactory sessionFactory = null;

        /**
         * local thread variable used for storing share session instance
         */
        private static final ThreadLocal localSession = new ThreadLocal();

        /**
         * log4j logger
         */
        private static final Logger logger = Logger
                .getLogger(HibernateTemplate.class);
        /**
         * use JTA transaction
         */
        /**
         * 該工具唯一實(shí)例。
         */
        private static HibernateTemplate instance = null;
        private static Transaction tx = null;
        private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
        private static final Configuration cfg = new Configuration();
        /** Holds a single instance of Session */
        private static final ThreadLocal threadLocal = new ThreadLocal();

        /**
         * 獲取持久工具的唯一實(shí)例,以后不是使用單實(shí)例模式,而不是采用對(duì)象池支持。
         * @return PersistentTool
         * @throws BaseException
         */
        public synchronized static HibernateTemplate getInstance() {
            if (instance == null) {
                instance = new HibernateTemplate();
                instance.initHibernate();
            }
            return instance;
        }

        /**
         * 實(shí)現(xiàn)Hibernate的初始化配置環(huán)境。
         */
        public void initHibernate() {
            try {
                //此處從系統(tǒng)路徑中獲取配置文件
                cfg.configure(CONFIG_FILE_LOCATION);
            } catch (HibernateException ex) {
                ex.printStackTrace();
            }
            try {
                // 裝載配置,構(gòu)造SessionFactory對(duì)象
                sessionFactory = cfg.buildSessionFactory();
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }

        /**
         * Get the share session
         * @
         * @return Session share session
         */
        public  Session getSession() {
            logger.debug("Now enter into getSession method of DaoUtil");
            //obtain share session
            Session session = (Session) localSession.get();
            try {
                if (session == null||!session.isOpen()) {
                    //get session by session factory
                    session = sessionFactory.openSession();
                    localSession.set(session);
                }
            } catch (HibernateException ex) {
                ex.printStackTrace();

            }
            return session;
        }

        /**
         * Close share session
         * @
         */
        public  void close() {
            logger.debug("Now enter into closeSessionl");
            //obtain share session
            Session session = (Session) localSession.get();
            localSession.set(null);
            if (session != null) {
                try {
                    session.flush();
                    session.close();
                } catch (HibernateException ex) {
                    ex.printStackTrace();

                }
            }
        }

        /**
         * Begin JTA transaction
         * @
         */
        public  void beginTransaction() {
            logger.debug("Now enter into beginTransaction");
            try {
                Session session = (Session) localSession.get();
                tx = session.beginTransaction();
            } catch (Exception ex) {
                ex.printStackTrace();

            }
        }

        /**
         * Commit transaction
         * @
         */
        public  void commitTransaction() {
            try {
                tx.commit();
            } catch (Exception ex) {
                ex.printStackTrace();

            }
        }

        /**
         * Rollback transaction when breaching ACID operation
         * @
         */
        public  void rollbackTransaction() {
            try {
                tx.rollback();
            } catch (Exception ex) {
                ex.printStackTrace();

            }
        }

        /**
         * Insert a record into table
         * @param obj Object
         * @throws DAOException
         * @
         */
        public  int insertObject(Object obj) throws DAOException {
         int res = 0;
            logger.debug("Now enter into insertObject");
            //obtain current share session
            try {
                Session session = HibernateTemplate.getInstance().getSession();
                beginTransaction();
                Object robj = session.save(obj);
                if (robj instanceof Integer) {
        res = (Integer) robj;
       }
                if (robj instanceof String) {
        res =1;
       }
                session.flush();
            } catch (HibernateException ex) {
                rollbackTransaction();
                logger.error("insertObject error:", ex);
                throw new DAOException(ex);
            } finally {
                commitTransaction();
                close();
            }
            return res;
        }


        /**
         * Delete a record of database table by Hibernate po object
         * @param obj Object
         * @throws DAOException
         * @
         */
        public  boolean deleteObject(Object obj) throws DAOException {
         boolean res = false;
            logger.debug("Now enter into deleteObject method");
            //obtain current share session
            try {
                Session session = HibernateTemplate.getInstance().getSession();
                beginTransaction();
                session.delete(obj);
                session.flush();
                res = true;
            } catch (HibernateException ex) {
                rollbackTransaction();
                logger.error("deleteObject error:", ex);
                throw new DAOException(ex);
            } finally {
                commitTransaction();
                close();
            }
            return res;
        }


        /**
         * Update a record of database table
         * @param ob Object
         * @throws DAOException
         * @
         */
        public  boolean updateObject(Object ob) throws DAOException {
         boolean res = false;
            logger.debug("Now enter into updateObject");
            //obtain current share session
            try {
                Session session = HibernateTemplate.getInstance().getSession();
                beginTransaction();
                session.update(ob);
                session.flush();
                res= true;
            } catch (HibernateException ex) {
             rollbackTransaction();
              logger.error("updateObject error:", ex);
              throw new DAOException(ex);
            } finally {
                commitTransaction();
                close();
            }
            return res;
        }
    }

    posted @ 2009-08-20 13:22 David1228 閱讀(1017) | 評(píng)論 (0)編輯 收藏
            // 如果想通過(guò)iterator進(jìn)行集合的添加、刪除、修改操作,可以使用java.util.ListIterator接口,該接口實(shí)現(xiàn)了java.util.Iterator接口,同時(shí)還增加了一些額外的方法,方便使用,如add、remove、set、nextIndex(調(diào)用next方法返回元素的索引值,int類型)、previousIndex(調(diào)用previous方法返回元素的索引值,int類型)。 
            List<String> staff = new LinkedList<String>();
            staff.add("Amy");
            staff.add("Bob");
            staff.add("Carl");

            // 刪除方法很特殊,真正刪除的是iter左邊的元素, 類似于退格鍵。
            ListIterator<String> iter = staff.listIterator();
            iter.next();
            iter.remove();
          
            // 遍歷.
            for (Iterator<String> iterator = staff.iterator(); iterator.hasNext();) {
                String s = (String) iterator.next();
                System.out.println("-------------->" + s);
            }

    ConcurrentModificationException異常什么時(shí)候會(huì)發(fā)生?
    List<String> staff = new LinkedList<String>();
            staff.add("Amy");
            staff.add("Bob");
            staff.add("Carl");

            // ConcurrentModificationException異常什么時(shí)候會(huì)發(fā)生?
            ListIterator<String> iter = staff.listIterator();
            ListIterator<String> iter2 = staff.listIterator();
           
            // 當(dāng)有多個(gè)iterator對(duì)同一個(gè)list迭代,如果有迭代器對(duì)list進(jìn)行了諸如add或remove的操作時(shí),則另一個(gè)迭代器會(huì)發(fā)生該異常。
            // 因?yàn)閕terator會(huì)負(fù)責(zé)檢測(cè)所他自己的索引變化跟所迭代集合的變化是否是一致的,如果不一致就會(huì)拋出
    ConcurrentModificationException異常。
            // 如果有進(jìn)行set方法的操作,則不會(huì)發(fā)生該異常。
            iter.add("yyy");
            iter.remove();
            iter2.next();

            // 按順序添加到集合中.
            for (Iterator<String> iterator = staff.iterator(); iterator.hasNext();) {
                String s = (String) iterator.next();
                System.out.println("-------------->" + s);
            }

    Java之LinkedList集合結(jié)合listIterator的使用案例:
    package com.javacore;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.ListIterator;

    public class LinkedListTest3 {
        public static void main(String[] args) {
            List<String> a = new LinkedList<String>();
            a.add("a-Amy");
            a.add("a-Bob");
            a.add("a-Carl");

            List<String> b = new LinkedList<String>();
            b.add("b-xxx");
            b.add("b-yyy");
            b.add("b-zzz");

            ListIterator<String> aIter = a.listIterator();
            Iterator<String> bIter = b.iterator();
            // 將b集合插入/合并到a集合中
            while (bIter.hasNext()) {
                if (aIter.hasNext()) {
                    aIter.next();
                }
                aIter.add(bIter.next());
            }
            // 輸出a集合
            System.out.println(a);

            // 從b中刪除第二個(gè)元素
            bIter = b.iterator();
            while (bIter.hasNext()) {
                bIter.next(); // 跳過(guò)第一個(gè)元素

                if (bIter.hasNext()) {
                    bIter.next(); // 跳過(guò)下一個(gè)元素
                    bIter.remove(); // 刪除那個(gè)元素
                }
            }

            // 輸出b集合
            System.out.println(b);

            // 刪除集合b
            a.removeAll(b);
            
            System.out.println(a);
        }
    }
    posted @ 2009-08-18 08:33 David1228| 編輯 收藏
    http://m.tkk7.com/wujun/archive/2009/05/18/65890.html
    posted @ 2009-08-17 15:15 David1228| 編輯 收藏
         摘要:   閱讀全文
    posted @ 2009-08-17 14:39 David1228 閱讀(3068) | 評(píng)論 (0)編輯 收藏

    ------------------------==================--------------------------
    這個(gè)過(guò)程只是在我做項(xiàng)目中的一個(gè)簡(jiǎn)單過(guò)程,給自己做個(gè)筆記!@_@

    :我用的是tomcat和Jboss應(yīng)用服務(wù)器。
          所以要將web工程和Ejb工程分開(kāi)部署好,
    web工程:tomcat/webapps/raweb/目錄下通過(guò)dos命令打包(jar -cvf  raweb.jar *)最好是通過(guò)Ant工具這樣比較方面些build.xml(自己試試寫(xiě)吧)!
    Ejb工程:直接通過(guò)Myeclipse工具部署即可,Jboss目錄--jboss/server/default/deploy/raejb.jar
         登陸進(jìn)入使用的linux平臺(tái)下:
    1-web首先停止服務(wù)器,tomcat/bin目錄下執(zhí)行 ./shutdown.sh 如果以前發(fā)布過(guò)這些項(xiàng)目做些最好的方式做下備份,我是直接刪除了tomcat/webapps/raweb(rm  -rf *)【刪除某個(gè)目錄下的所有文件】通過(guò)FTP工具上傳本地打好的jar包到linux的tomcat/webapps/raweb下,然后執(zhí)行該目錄下解開(kāi)jar命令:(jar -xvf raweb.jar ) ,刪除該目錄下的raweb.jar包OK?。?dòng)服務(wù),tomcat/bin目錄下(./startup.sh),然后查看日志命令(tail -f catalina.out)........ok
     2-ejb首先殺掉進(jìn)程,查看信息命令(ps -ef|grep java), 找到你工程的進(jìn)程號(hào)xxxx 執(zhí)行(kill -9 xxxx),jboss/server/default/deploy/下刪除工程raejb.jar(rm -rf  raejb.jar),通過(guò)FTP上傳本地jar包到該目錄下,在jboss/bin/目錄下啟動(dòng)命令(nohup ./run.sh) .查看日志(tail -f nohup.out) .....OK

    順便推薦大家一個(gè)個(gè)人感覺(jué)比putty和SSH Secure Shell還方便的shell工具 XManager3.0企業(yè)版的,網(wǎng)上找下,也有注冊(cè)碼。

    WebLogic下:

    應(yīng)用路徑
    /app/weblogic/bea/domains/epay/applications/efb
    日志路徑
    /app/weblogic/bea/domains/epay/logs/efb

    tail -f /app/weblogic/bea/domains/epay/logs/efb/info.log

    cd /app/weblogic/bea/domains/epay
    netstat -lnap|grep 7005
    kill -9 進(jìn)程號(hào)
    nohup ./startWebLogic.sh &

    緩存目錄
    cd /app/weblogic/bea/domains/epay/servers/AdminServer/tmp/_WL_user


    posted @ 2009-08-10 22:58 David1228 閱讀(1353) | 評(píng)論 (0)編輯 收藏
        只有注冊(cè)用戶登錄后才能閱讀該文。閱讀全文
    posted @ 2009-04-05 12:13 David1228| 編輯 收藏
    IN
    確定給定的值是否與子查詢或列表中的值相匹配。

    EXISTS
    指定一個(gè)子查詢,檢測(cè)行的存在。

    比較使用 EXISTS 和 IN 的查詢

    這個(gè)例子比較了兩個(gè)語(yǔ)義類似的查詢。
    第一個(gè)查詢使用 EXISTS 而第二個(gè)查詢使用 IN。注意兩個(gè)查詢返回相同的信息。
    SELECT DISTINCT pub_name
    FROM publishers
    WHERE EXISTS
    (SELECT *
    FROM titles
    WHERE pub_id = publishers.pub_id
    AND type = 'business')

    -- Or, using the IN clause:

    SELECT distinct pub_name
    FROM publishers
    WHERE pub_id IN
    (SELECT pub_id
    FROM titles
    WHERE type = 'business')

    下面是任一查詢的結(jié)果集:
    pub_name
    ----------------------------------------
    Algodata Infosystems
    New Moon Books


    exits 相當(dāng)于存在量詞:表示集合存在,也就是集合不為空只作用一個(gè)集合.
    例如 exist P表示P不空時(shí)為真; not exist P表示p為空時(shí)為真in表示一個(gè)標(biāo)量和一元關(guān)系的關(guān)系。
    例如:s in P表示當(dāng)s與P中的某個(gè)值相等時(shí) 為真; s not in P 表示s與P中的每一個(gè)值都不相等時(shí) 為真

    在Oracle SQL中取數(shù)據(jù)時(shí)有時(shí)要用到in 和 exists 那么他們有什么區(qū)別呢?

    1)性能上的比較
    比如Select * from T1 where x in ( select y from T2 )
    執(zhí)行的過(guò)程相當(dāng)于:
    select *
      from t1, ( select distinct y from t2 ) t2
    where t1.x = t2.y;

    相對(duì)的

    select * from t1 where exists ( select null from t2 where y = x )
    執(zhí)行的過(guò)程相當(dāng)于:
    for x in ( select * from t1 )
       loop
          if ( exists ( select null from t2 where y = x.x )
          then
             OUTPUT THE RECORD
          end if
    end loop
    表 T1 不可避免的要被完全掃描一遍

    分別適用在什么情況?
    以子查詢 ( select y from T2 )為考慮方向
    如果子查詢的結(jié)果集很大需要消耗很多時(shí)間,但是T1比較小執(zhí)行( select null from t2 where y = x.x )非常快,那么exists就比較適合用在這里
    相對(duì)應(yīng)得子查詢的結(jié)果集比較小的時(shí)候就應(yīng)該使用in.

    in和exists
    in 是把外表和內(nèi)表作hash 連接,而exists是對(duì)外表作loop循環(huán),每次loop循環(huán)再對(duì)內(nèi)表進(jìn)行查詢。
    一直以來(lái)認(rèn)為exists比in效率高的說(shuō)法是不準(zhǔn)確的。
    如果查詢的兩個(gè)表大小相當(dāng),那么用in和exists差別不大。

    如果兩個(gè)表中一個(gè)較小,一個(gè)是大表,則子查詢表大的用exists,子查詢表小的用in:
    例如:表A(小表),表B(大表)
    1:
    select * from A where cc in (select cc from B)
    效率低,用到了A表上cc列的索引;
    select * from A where exists(select cc from B where cc=A.cc)
    效率高,用到了B表上cc列的索引。

    相反的
    2:
    select * from B where cc in (select cc from A)
    效率高,用到了B表上cc列的索引;
    select * from B where exists(select cc from A where cc=B.cc)
    效率低,用到了A表上cc列的索引。

    not in 和not exists
    如果查詢語(yǔ)句使用了not in 那么內(nèi)外表都進(jìn)行全表掃描,沒(méi)有用到索引;
    而not extsts 的子查詢依然能用到表上的索引。
    所以無(wú)論那個(gè)表大,用not exists都比not in要快。

    in 與 =的區(qū)別
    select name from student where name in ('zhang','wang','li','zhao');


    select name from student where name='zhang' or name='li' or name='wang' or name='zhao'的結(jié)果是相同的。
    posted @ 2009-03-31 13:08 David1228 閱讀(4353) | 評(píng)論 (0)編輯 收藏
    創(chuàng)建過(guò)程的語(yǔ)法:     

    create [or replace] procedure procedure_name
      
    [(argument[{in|out|in out}] type,
        
       argument
    [{in|out|in out}] type)] {is|as}
      procedure_body
      
      

    簡(jiǎn)單的例子:



      
    create procedure RaiseError(
       
    /*if p_Raise is true,then an unhandled error is raised.
       if p_Raise is false,the procedure completes successfully.
    */
          p_Raise 
    in boolean:=true,
          p_ParameterA  out 
    numberas
          
      
    begin 
          p_Parameter1:
    ='abcdwxc';
          p_Parameter2:
    =143;
      
    end ParameterLength;

     

    刪除過(guò)程語(yǔ)法:

    drop procedure procedure_name;

     

    2、創(chuàng)建函數(shù)的語(yǔ)法:

    Code

     

    簡(jiǎn)單函數(shù)的例子:

     create function ClassInfo(
          p_Department classes.department
    %type,
          p_Course     classes.course
    %type)
          
    return varchar is 
          v_CurrentStudents 
    number;
          v_MaxStudents     
    number;
          v_PercentFull     
    number;
          
    begin
              
    select current_students,max_students 
              
    into v_CurrentStudents,v_MaxStudents
              
    from classes
              
    where department=P_Department and course=P_Course;
              
              
    --計(jì)算百分比
              v_PercentFull:=v_CurrentStudents/V_MaxStudent*100;
              
              
    if v_PercentFull=100 then
              
    return 'Full';
              elseif v_PercentFull
    >80 then 
              
    return 'Some Room';
              elseif v_PercentFull
    >60 then 
              
    return 'More Room';
              elseif v_PercentFull
    >0 then 
              
    return 'Lots of Room';
              
    else
              
    return 'Empty';
              
    end if 
              
          
    end ClassInfo;
              

     

    刪除函數(shù)語(yǔ)法:

    drop function function_name;
    posted @ 2009-01-31 12:18 David1228| 編輯 收藏
        只有注冊(cè)用戶登錄后才能閱讀該文。閱讀全文
    posted @ 2008-12-15 15:54 David1228| 編輯 收藏
         摘要:   使用的數(shù)據(jù)庫(kù)是MSSQL,庫(kù)名hibernate,預(yù)建立的表有3張。 分別是Student(學(xué)生)表,字段名:id、team_di、name、cardId、age。 team(班級(jí))表,字段名:id、team_id。 Certificate(身份證)表,字段名:id、describe。 Student與Certificate是一對(duì)一的關(guān)系,team與Student是一對(duì)多的...  閱讀全文
    posted @ 2008-12-15 15:44 David1228| 編輯 收藏
    僅列出標(biāo)題
    共16頁(yè): First 上一頁(yè) 8 9 10 11 12 13 14 15 16 下一頁(yè) 

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊(cè)

    收藏夾

    Java

    Linux知識(shí)相關(guān)

    Spring相關(guān)

    云計(jì)算/Linux/虛擬化技術(shù)/

    友情博客

    多線程并發(fā)編程

    開(kāi)源技術(shù)

    持久層技術(shù)相關(guān)

    搜索

    •  

    積分與排名

    • 積分 - 358808
    • 排名 - 154

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 老牛精品亚洲成av人片| 亚洲综合成人网在线观看| 亚洲熟妇无码乱子AV电影| 亚洲成AV人片在| 亚洲国产精品yw在线观看| 亚洲av无码成人精品区一本二本 | 亚洲精品中文字幕无乱码麻豆| 亚洲色大成网站WWW国产| 三级片免费观看久久| 今天免费中文字幕视频| 成人免费激情视频| 免费a在线观看播放| 一级成人a做片免费| aaa毛片视频免费观看| 8x网站免费入口在线观看| 成熟女人牲交片免费观看视频| 免费v片在线观看| 亚洲韩国—中文字幕| 亚洲日本VA午夜在线影院| 99久久成人国产精品免费| 国产大片线上免费观看| 亚洲国产成人久久综合一区77 | 亚洲国产精品自在拍在线播放| 久久久久亚洲av无码专区导航| 亚洲AV色无码乱码在线观看| 中文字幕在线视频免费| 国产桃色在线成免费视频| AV在线播放日韩亚洲欧| 亚洲国产精品成人久久久| 一个人看的免费视频www在线高清动漫| 日本一卡精品视频免费| 国产精品免费看久久久无码| 亚洲va无码专区国产乱码| 亚洲午夜福利在线视频| 精品四虎免费观看国产高清午夜| 成人黄页网站免费观看大全| 亚洲精品乱码久久久久久自慰| 日本亚洲色大成网站www久久 | 亚洲午夜免费视频| 国产一区视频在线免费观看| 亚洲精品视频在线观看免费|