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
               */
              /**
               * 該工具唯一實例。
               */
              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();

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

              /**
               * 實現Hibernate的初始化配置環境。
               */
              public void initHibernate() {
                  try {
                      //此處從系統路徑中獲取配置文件
                      cfg.configure(CONFIG_FILE_LOCATION);
                  } catch (HibernateException ex) {
                      ex.printStackTrace();
                  }
                  try {
                      // 裝載配置,構造SessionFactory對象
                      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 閱讀(1022) | 評論 (0)編輯 收藏
                  // 如果想通過iterator進行集合的添加、刪除、修改操作,可以使用java.util.ListIterator接口,該接口實現了java.util.Iterator接口,同時還增加了一些額外的方法,方便使用,如add、remove、set、nextIndex(調用next方法返回元素的索引值,int類型)、previousIndex(調用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異常什么時候會發生?
          List<String> staff = new LinkedList<String>();
                  staff.add("Amy");
                  staff.add("Bob");
                  staff.add("Carl");

                  // ConcurrentModificationException異常什么時候會發生?
                  ListIterator<String> iter = staff.listIterator();
                  ListIterator<String> iter2 = staff.listIterator();
                 
                  // 當有多個iterator對同一個list迭代,如果有迭代器對list進行了諸如add或remove的操作時,則另一個迭代器會發生該異常。
                  // 因為iterator會負責檢測所他自己的索引變化跟所迭代集合的變化是否是一致的,如果不一致就會拋出
          ConcurrentModificationException異常。
                  // 如果有進行set方法的操作,則不會發生該異常。
                  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集合結合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中刪除第二個元素
                  bIter = b.iterator();
                  while (bIter.hasNext()) {
                      bIter.next(); // 跳過第一個元素

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

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

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

          ------------------------==================--------------------------
          這個過程只是在我做項目中的一個簡單過程,給自己做個筆記!@_@

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

          順便推薦大家一個個人感覺比putty和SSH Secure Shell還方便的shell工具 XManager3.0企業版的,網上找下,也有注冊碼。

          WebLogic下:

          應用路徑
          /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 進程號
          nohup ./startWebLogic.sh &

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


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

          EXISTS
          指定一個子查詢,檢測行的存在。

          比較使用 EXISTS 和 IN 的查詢

          這個例子比較了兩個語義類似的查詢。
          第一個查詢使用 EXISTS 而第二個查詢使用 IN。注意兩個查詢返回相同的信息。
          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')

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


          exits 相當于存在量詞:表示集合存在,也就是集合不為空只作用一個集合.
          例如 exist P表示P不空時為真; not exist P表示p為空時為真in表示一個標量和一元關系的關系。
          例如:s in P表示當s與P中的某個值相等時 為真; s not in P 表示s與P中的每一個值都不相等時 為真

          在Oracle SQL中取數據時有時要用到in 和 exists 那么他們有什么區別呢?

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

          相對的

          select * from t1 where exists ( select null from t2 where y = x )
          執行的過程相當于:
          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 )為考慮方向
          如果子查詢的結果集很大需要消耗很多時間,但是T1比較小執行( select null from t2 where y = x.x )非常快,那么exists就比較適合用在這里
          相對應得子查詢的結果集比較小的時候就應該使用in.

          in和exists
          in 是把外表和內表作hash 連接,而exists是對外表作loop循環,每次loop循環再對內表進行查詢。
          一直以來認為exists比in效率高的說法是不準確的。
          如果查詢的兩個表大小相當,那么用in和exists差別不大。

          如果兩個表中一個較小,一個是大表,則子查詢表大的用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
          如果查詢語句使用了not in 那么內外表都進行全表掃描,沒有用到索引;
          而not extsts 的子查詢依然能用到表上的索引。
          所以無論那個表大,用not exists都比not in要快。

          in 與 =的區別
          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'的結果是相同的。
          posted @ 2009-03-31 13:08 David1228 閱讀(4357) | 評論 (0)編輯 收藏
          創建過程的語法:     

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

          簡單的例子:



            
          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;

           

          刪除過程語法:

          drop procedure procedure_name;

           

          2、創建函數的語法:

          Code

           

          簡單函數的例子:

           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;
                    
                    
          --計算百分比
                    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;
                    

           

          刪除函數語法:

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

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章檔案

          新聞分類

          新聞檔案

          相冊

          收藏夾

          Java

          Linux知識相關

          Spring相關

          云計算/Linux/虛擬化技術/

          友情博客

          多線程并發編程

          開源技術

          持久層技術相關

          搜索

          •  

          積分與排名

          • 積分 - 359978
          • 排名 - 154

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 通江县| 屏东市| 纳雍县| 苍溪县| 昌乐县| 两当县| 锦州市| 武鸣县| 内丘县| 新晃| 崇明县| 永定县| 金乡县| 青海省| 青岛市| 芜湖市| 赞皇县| 甘谷县| 开远市| 汶川县| 齐河县| 枣庄市| 深泽县| 昭觉县| 安徽省| 扶风县| 舒城县| 康乐县| 庐江县| 白河县| 额济纳旗| 贡觉县| 徐水县| 将乐县| 郧西县| 聂荣县| 灵寿县| 尉犁县| SHOW| 观塘区| 萨嘎县|