国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CSDN 文檔中心:Hibernate訪問多個數(shù)據(jù)庫
一、Hibernate訪問數(shù)據(jù)庫時加載的過程

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

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

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

默認狀態(tài)下configure()方法會自動在環(huán)境變量(classpath)下面尋找Hibernate配置文件hibernate.cfg.xml,如果該文件不存在,系統(tǒng)會打印如下信息并拋出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()會依次訪問以下幾個元素的內(nèi)容
<mapping>
<jcs-class-cache>
<jcs-collection-cache>
<collection-cache>


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

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

二、Hibernate訪問多個數(shù)據(jù)庫的配置
根據(jù)以上所述,configure()方法默認是通過訪問hibernate.cfg.xml的<mapping>元素來加載我們提供的.hbm.xml文件。我們也可以直接指定hbm.xml文件,例如addClass()方法可以直接通過指定class來加載對應的映射文件,hibernate會將提供的class的全名(包括package)自動轉(zhuǎn)化為文件路徑,還可以用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配置來配置多個數(shù)據(jù)庫的話,那就寫多個配置文件。這里假設對應兩個數(shù)據(jù)庫(一個是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,多數(shù)據(jù)庫就更簡單了,像這段代碼可以完成所有配置:
<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訪問多個數(shù)據(jù)庫的一般方法,hibernate還有很多可行的配置,有興趣的讀者可以參考它的reference。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hibernate中SessionFactory配置
Hibernate實例
Hibernate4實戰(zhàn)之第一部分Hibernate入門
Hibernate配置文件在單元測試中的靈活運用
Hibernate 5.0.2加載hibernate.cfg.xml時mapping不生效
admin module
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服