隨筆-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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 乐清市| 乌什县| 巨鹿县| 开封市| 临安市| 宕昌县| 洱源县| 大关县| 饶平县| 庆安县| 麦盖提县| 宜昌市| 伊金霍洛旗| 武义县| 通州区| 沁阳市| 阳曲县| 儋州市| 梨树县| 博白县| 邢台市| 固始县| 科技| 德惠市| 邵武市| 台州市| 桂阳县| 米易县| 荣昌县| 云梦县| 称多县| 措勤县| 阳西县| 沁阳市| 南昌县| 黑山县| 台北市| 垫江县| 安溪县| 刚察县| 彭山县|