新聞中心
Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹Hibernate schema,包括介紹切換Schema等方面。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比榮昌網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式榮昌網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋榮昌地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
Hibernate schema
如果你在調(diào)用Hibernate的時候需要切換schema怎么辦呢。
在oracle中,不同的用戶,使用不同的schema.在Hibernate的POJO中,會指定了schema
- version="1.0" encoding="utf-8"?>
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
name="com.csc.poimanager.dao.Poi" table="POI" schema="P_BEIJING"> name="poiId" type="java.lang.Long"> name="POI_ID" precision="10" scale="0" /> class="increment" /> name="cnName" type="java.lang.String"> name="CN_NAME" length="1000" />
上面的代碼部分,就指定了Schema.如果在操作的時候想切換Schema.操作如下:
默認的配置
上面的映射文件改為:
- version="1.0" encoding="utf-8"?>
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
name="com.csc.poimanager.dao.Poi" table="POI" > name="poiId" type="java.lang.Long"> name="POI_ID" precision="10" scale="0" /> class="increment" /> name="cnName" type="java.lang.String"> name="CN_NAME" length="1000" />
在操作的,可以用下面的方法來重新build你的SessionFactory
- public static void rebuildSessionFactoryForChangeSchema(String newSchema){
- try {
- Properties p = configuration.getProperties();
- System.out.println("---" + p);
- p.put("hibernate.default_schema", newSchema);
- sessionFactory = configuration.buildSessionFactory();
- System.out.println(" change schema successfully ......... ");
- } catch (Exception e) {
- System.err
- .println("%%%% rebuild session factory failed for changing schema %%%%");
- e.printStackTrace();
- }
- }
如果需要改變Schema,就需要在需要的時候調(diào)用此方法。
比如在SchemaAction中
- HibernateSessionFactory.rebuildSessionFactoryForChangeSchema("POI_SHANGHAI");
- System.out.println(" change successfully---");
- PoiDAO pd = new PoiDAO();
- Transaction t =pd.getSession().beginTransaction();
- pd.save(new Poi("jsfjksdf"));
- t.commit();
那么,原來,是向POI_BEIJING中插入數(shù)據(jù)的,變成了向POI_SHANGHAI中插入一條數(shù)據(jù)了。通過這種方法,可以實現(xiàn)在操作不同的Schema的時候?qū)崿F(xiàn)切換。
問題:此處改變的是靜態(tài)工廠。所以,會對所有的用戶產(chǎn)生影響。如果不想對所有的用戶改變,那么可以根據(jù)Schema的名稱來取得自己對應(yīng)的SessionFactoy就可以了。以上介紹Hibernate schema。
【編輯推薦】
- 淺析Hibernate orm框架
- Hibernate Callback簡單概括
- 概述Hibernate dbcp連接池使用方法
- Hibernate Shard三種策略剖析
- 討論Hibernate和模型對象
當前題目:Hibernate schema簡單分析
文章分享:http://fisionsoft.com.cn/article/cosgogi.html


咨詢
建站咨詢
