隨筆-95  評論-31  文章-10  trackbacks-0
          1、使用hibernate生成主鍵方式的時候,注意別的應用程序是否同時操作一張表,如果別的應用程序使用max+1手工生成主鍵,那么本應用程序hibernate配置sequence的主鍵策略,就有可能和現有程序操作表發生違反主鍵約束的異常。需要主鍵生成方式一致就不會有問題。
          2、hibernate配置多數據庫源,多個就配置多個數據庫連接即有多個*.hbm.xml文件,還有如何動態配置oracle表空間名字,代碼如下:
           1public synchronized static Session getSession(String database) {
           2        Session session = null;
           3        if (identify_ECG.equals(database.toUpperCase())) {
           4            session = tl.get();
           5            if (session == null{
           6                if (sf_ecg == null{
           7                    if (conf_ecg == null{
           8                        conf_ecg = new Configuration();
           9                        conf_ecg.configure("hibernate_ecg.cfg.xml");
          10                        Properties p = conf_ecg.getProperties();   
          11                        p.put("hibernate.default_schema", getHhecg_user());   //這里是加入不同的表空間設置
          12                    }

          13                    sf_ecg = conf_ecg.buildSessionFactory();
          14                }

          15                session = sf_ecg.openSession();
          16                tl.set(session);
          17            }

          18        }
           else if (identify_SC.equals(database.toUpperCase())) {
          19            session = tl.get();
          20            if (session == null{
          21                if (sf_sc == null{
          22                    if (conf_sc == null{
          23                        conf_sc = new Configuration();
          24                        conf_sc.configure("hibernate_sc.cfg.xml");
          25                        Properties p = conf_sc.getProperties();   
          26                        p.put("hibernate.default_schema", getHhsc_user());   //這里是加入不同的表空間設置
          27                    }

          28                    sf_sc = conf_sc.buildSessionFactory();
          29                }

          30                session = sf_sc.openSession();
          31                tl.set(session);
          32            }

          33        }

          34        return session;
          35    }

          36
          37    // 關閉session
          38    public static void closeSession() {
          39        Session session = tl.get();
          40        if (session != null{
          41            session.close();
          42            tl.set(null);
          43        }

          44    }
          根據用戶請求來判斷采用何種數據庫,database即為區分數據庫的標識。
          如果在實體類的映射文件,配置了schema="表空間用戶名" 那么上面代碼里面的p.put("hibernate.default_schema", getHhsc_user()); 失效
          posted on 2012-01-18 12:41 朔望魔刃 閱讀(273) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 沧州市| 陆川县| 二连浩特市| 平罗县| 炎陵县| 东城区| 朝阳县| 兴安盟| 湘乡市| 涟水县| 平舆县| 蕲春县| 嵊泗县| 乐至县| 福清市| 务川| 吉安市| 通榆县| 阳西县| 灵石县| 巫山县| 贵南县| 文登市| 贡嘎县| 繁昌县| 长顺县| 石嘴山市| 大名县| 伊金霍洛旗| 扶风县| 阿合奇县| 白城市| 海林市| 祁东县| 双流县| 濮阳市| 沙洋县| 汾阳市| 镇安县| 廉江市| 伊金霍洛旗|