亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Hibernate訪問多個數據庫

2019-11-18 12:11:56
字體:
來源:轉載
供稿:網友

一、Hibernate訪問數據庫時加載的過程

對于大多數使用Hibernate的朋友來說,通常使用一下方式來獲得Configuration實例: Configuration configure = new Configuration().configure();

在Hibernate中,Configuration是hibernate的入口。在實例化一個Configuration的時候,Hibernate會自動在環境變量(classpath)里面查找Hibernate配置文件hibernate.PRoperties。假如該文件存在,則將該文件的內容加載到一個Properties的實例GLOBAL_PROPERTIES里面,假如不存在,將打印信息  hibernate.properties not found;

接下來Hibernate將所有系統環境變量(System.getProperties())也添加到GLOBAL_PROPERTIES里面。假如配置文件hibernate.properties存在,系統還會進一步驗證這個文件配置的有效性,對于一些已經不支持的配置參數,系統將打印出警告信息。

默認狀態下configure()方法會自動在環境變量(classpath)下面尋找Hibernate配置文件hibernate.cfg.xml,假如該文件不存在,系統會打印如下信息并拋出HibernateException異常: hibernate.cfg.xml not found;假如該文件存在,configure()方法會首先訪問<session-factory>,并獲取該元素name的屬性,假如name的屬性非空,將用這個配置的值來覆蓋hibernate.properties的hibernate.session_factory_name的配置的值,從這里我們可以看出,hibernate.cfg.xml里面的配置信息可以覆蓋hibernate.properties的配置信息。

接下來configure()方法訪問<session-factory>的子元素,首先將使用所有的<property>元素配置的信息來覆蓋hibernate.properties里面對應的配置信息。
然后configure()會依次訪問以下幾個元素的內容
<mapping>
<jcs-class-cache>
<jcs-collection-cache>
<collection-cache>


其中<mapping>是必不可少的,必須通過配置<mapping>,configure()才能訪問到我們定義的java對象和關系數據庫表的映射文件(hbm.xml),例如:
<mapping resource="Cat.hbm.xml"/>

這樣configure()方法利用各種資源就創建了一個Configuration實例。對于整個項目來說,假如用一個本地線程來存放這個Configuration實例,那么整個項目只需要實例化一次Configuration對象(注:Configuration實例很花費時間),也就提高了項目的效率。

二、Hibernate訪問多個數據庫的配置
根據以上所述,configure()方法默認是通過訪問hibernate.cfg.xml的<mapping>元素來加載我們提供的.hbm.xml文件。我們也可以直接指定hbm.xml文件,例如addClass()方法可以直接通過指定class來加載對應的映射文件,hibernate會將提供的class的全名(包括package)自動轉化為文件路徑,還可以用addFile方法直接指定映射文件。例如:
Configuration configurate = new Configuration().addClass(“Book.class”);
Configuration configurate = new Configuration().addURL(Configuration.class.getResource ("/Book.hbm.xml"));
Configuration config = new Configuration().addFile("/Cat.hbm.xml");


這樣,假如用xml配置來配置多個數據庫的話,那就寫多個配置文件。這里假設對應兩個數據庫(一個是MySQL,一個是SQLServer),我們可以把其xml文件定義為“mysql.cfg.xml”和“sqlserver.cfg.xml”。則用Configuration類獲取SessionFactory的代碼如下:
SessionFactory mysqlFactory = new Configuration().configure("/mysql.cfg.xml").buildSessionFactory(); 
SessionFactory sqlserverFactory = new Configuration().configure("sqlserver.cfg.xml ").buildSessionFactory();


假如你用spring,多數據庫就更簡單了,像這段代碼可以完成所有配置:
<beans> 
<bean id="mysqlDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="passWord">
<value>123</value>
</property>
</bean>

<bean id="mysqlFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="mysqlDS"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>test.hbm.xml</value>
</list>
</property>
</bean>

<bean id="sqlserverDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url">
<value>jdbc:odbc:test</value>
</property>
<property name="driverClassName">
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123</value>
</property>
</bean>

<bean id="sqlserverFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="sqlserverDS"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>test.hbm.xml</value>
</list>
</property>
</bean>
.......
</beans>


以上只是配置Hibernate訪問多個數據庫的一般方法,hibernate還有很多可行的配置,有愛好的讀者可以參考它的reference。

關于作者:
楊曉,北京工商大學計算機碩士,曾在NEC-SI、Softbrain 擔任java開發工作。
博客:http://blog.sina.com.cn/u/1237288325

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频网站| 这里只有精品在线播放| 欧美在线激情网| 国产美女直播视频一区| 国产亚洲欧美一区| 日韩av123| 亚洲第一色中文字幕| 色av中文字幕一区| 国产精品视频男人的天堂| 国产97免费视| 国产999视频| 欧洲成人在线观看| 欧美精品18videos性欧| 欧美在线一级va免费观看| 久久久久久91香蕉国产| 精品亚洲国产视频| 欧美日本在线视频中文字字幕| 日韩欧美大尺度| 欧美精品18videos性欧美| 国产精品视频中文字幕91| 欧美中文在线视频| 97在线精品视频| 欧美精品在线免费| 亚洲欧美日韩网| 欧美成人精品激情在线观看| 日韩电影大片中文字幕| 深夜福利亚洲导航| 亚洲va欧美va在线观看| 欧美综合在线观看| 久久久精品久久| 国产精品视频久久久久| 国产视频精品一区二区三区| 国产999精品| 狠狠色香婷婷久久亚洲精品| 久久久成人精品| 狠狠久久亚洲欧美专区| 日韩一区二区三区xxxx| 亚洲精品国产精品久久清纯直播| 91sao在线观看国产| 最近更新的2019中文字幕| 国产亚洲一区二区精品| 欧美日韩成人在线播放| 78m国产成人精品视频| 欧美成人在线免费| 亚洲美女在线视频| 国产精品三级美女白浆呻吟| 久久久亚洲福利精品午夜| 亚洲三级免费看| 亚洲电影成人av99爱色| 国产精品久久久久久av福利软件| 欧美午夜www高清视频| 亚洲国产高清高潮精品美女| 高清在线视频日韩欧美| 久久免费国产精品1| 一夜七次郎国产精品亚洲| 国产欧美日韩中文字幕| 高清一区二区三区四区五区| 久久精品久久久久久| 久久国产精品99国产精| www国产亚洲精品久久网站| 2019国产精品自在线拍国产不卡| 91精品国产高清自在线| 中文字幕欧美专区| 成人在线视频网| 黑人巨大精品欧美一区二区一视频| 欧美日韩国产一区二区三区| 91精品国产九九九久久久亚洲| 欧美日韩在线视频一区| 色偷偷噜噜噜亚洲男人| 国产自摸综合网| 久久久久久久久久久免费| 国产一区二区成人| 久久国产精品99国产精| 韩国视频理论视频久久| 久久久免费观看| 国产精品ⅴa在线观看h| 69久久夜色精品国产7777| 国产精品一区二区久久| 欧美电影免费播放| 国产aaa精品| 精品欧美aⅴ在线网站| 久久精品青青大伊人av| 亚洲欧美日韩一区二区三区在线| 91精品国产91久久久| 日本久久久a级免费| 色妞在线综合亚洲欧美| 亚洲国产精品电影在线观看| 亚洲专区国产精品| 中国日韩欧美久久久久久久久| 91av中文字幕| 久久精品国产一区二区电影| 亚洲人成在线电影| 国产精品国语对白| 欧美日韩精品在线观看| 国产日韩av在线播放| 国语自产精品视频在线看抢先版图片| 午夜精品免费视频| 国产一区二区三区毛片| 在线视频欧美日韩| 欧美成人免费视频| 亚洲国产精品大全| 国产精品私拍pans大尺度在线| 国产一区二区三区在线免费观看| 欧美福利在线观看| 欧美性xxxxx极品娇小| 97色在线视频观看| 久久夜精品va视频免费观看| 国产suv精品一区二区三区88区| 久久天天躁日日躁| 久久久久久久国产| 亚洲毛片一区二区| 欧美性猛交xxxx乱大交极品| 亚洲成色777777在线观看影院| 亚洲国产高清高潮精品美女| 精品久久香蕉国产线看观看gif| 91情侣偷在线精品国产| 久久香蕉精品香蕉| 超碰精品一区二区三区乱码| 国产精品日韩一区| 在线观看国产精品日韩av| 久久久久久久久久久人体| 久久久视频在线| 国产在线播放不卡| 亚洲人成在线电影| 91在线无精精品一区二区| 国产精品美女无圣光视频| 日本一区二区在线播放| 日韩欧美在线观看| 成人精品久久久| 国产一区二区三区在线免费观看| 亚洲视频在线观看免费| 亚洲色图50p| 国产精品久久久久久一区二区| 久久中文精品视频| 中文字幕不卡在线视频极品| 久久精品国产96久久久香蕉| 日韩免费在线免费观看| 国产专区欧美专区| 欧美激情欧美激情| 色婷婷综合久久久久中文字幕1| 久久这里只有精品99| 日韩免费黄色av| 欧美精品手机在线| 欧美激情精品久久久久| 这里只有精品久久| 国产精国产精品| 一本色道久久综合狠狠躁篇的优点| 国产亚洲精品日韩| 日韩av综合网| 精品国产乱码久久久久久虫虫漫画| 国产精品18久久久久久首页狼| 欧美成人精品h版在线观看| 久久免费视频这里只有精品| 最近2019中文免费高清视频观看www99| 国产一区二区久久精品| 精品久久久一区二区| 亚洲色图偷窥自拍| 国产精品成人免费视频| 亚洲开心激情网| 91高清免费视频| 欧美视频精品一区| 日韩欧美aⅴ综合网站发布| 欧美国产日韩一区二区三区| 精品中文视频在线|