<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ZhipSoft.com
        冬去春來
            鄭重聲明:本Blog純屬個人學習、工作需要,記錄相關資料。請不要發(fā)表任何有人身攻擊的言論,謝謝?。?/font>www.ZhipSoft.com
    posts - 94,comments - 149,trackbacks - 0

    一、 ???????????? 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 )自動轉化為文件路徑,還可以用 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 。



            本Blog純屬個人學習、工作需要,記錄相關資料。請不要發(fā)表任何有人身攻擊的言論,謝謝! www.zhipsoft.cn
    posted on 2007-01-03 10:37 ZhipSoft 閱讀(792) 評論(0)  編輯  收藏 所屬分類: Hibernate

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 久久经典免费视频| 羞羞视频在线免费观看| 中文字幕无线码免费人妻| 国产精品无码免费视频二三区| 亚洲中文字幕日本无线码| 五月亭亭免费高清在线| 亚洲免费人成视频观看| 国产免费AV片在线播放唯爱网| 亚洲一区二区三区四区视频| 成人免费午夜在线观看| 亚洲国产精品无码第一区二区三区| 免费理论片51人人看电影| 瑟瑟网站免费网站入口| 亚洲一区二区女搞男| 无码人妻一区二区三区免费看| 亚洲成aⅴ人片在线影院八| 最新中文字幕电影免费观看| 日本系列1页亚洲系列| 中文亚洲AV片不卡在线观看| 美女视频黄的免费视频网页 | 国产免费爽爽视频在线观看| 亚洲无删减国产精品一区| 亚洲免费人成视频观看| 亚洲综合久久一本伊伊区| 国产gav成人免费播放视频| 中国极品美軳免费观看| 亚洲人成网站在线观看播放动漫| 天天天欲色欲色WWW免费| 特级毛片在线大全免费播放| 亚洲成年轻人电影网站www| 久久精品网站免费观看 | 亚洲AV综合色区无码一二三区| 免费观看午夜在线欧差毛片| 免费观看在线禁片| 中文字幕乱码亚洲精品一区 | 四虎在线免费视频| 色哟哟国产精品免费观看| 亚洲综合一区二区| 日韩亚洲精品福利| 亚洲电影免费观看| h视频在线免费观看|