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

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


          網站導航:
           
          主站蜘蛛池模板: 湖州市| 阜宁县| 吐鲁番市| 环江| 若羌县| 浦东新区| 尚志市| 商水县| 镇坪县| 闽清县| 元朗区| 神池县| 南漳县| 绥阳县| 安塞县| 巴里| 犍为县| 四子王旗| 乐昌市| 新龙县| 大英县| 崇阳县| 虎林市| 镇宁| 聂拉木县| 老河口市| 古田县| 承德县| 中西区| 壶关县| 金阳县| 清流县| 离岛区| 承德县| 商丘市| 班玛县| 隆尧县| 寻乌县| 全椒县| 成武县| 南岸区|