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

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

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

    ZhipSoft.com
        冬去春來
            鄭重聲明:本Blog純屬個人學(xué)習(xí)、工作需要,記錄相關(guān)資料。請不要發(fā)表任何有人身攻擊的言論,謝謝!!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)將打印出警告信息。

    默認(rèn)狀態(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 里面對應(yīng)的配置信息。

    然后 configure() 會依次訪問以下幾個元素的內(nèi)容

    mapping
    jcs-class-cache
    jcs-collection-cache
    collection-cache

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

    mapping resource="Cat.hbm.xml"/

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

    ?

    二、 ???????????? Hibernate 訪問多個數(shù)據(jù)庫的配置

    根據(jù)以上所述, configure() 方法默認(rèn)是通過訪問 hibernate.cfg.xml 的< mapping >元素來加載我們提供的 .hbm.xml 文件。我們也可以直接指定 hbm.xml 文件,例如 addClass() 方法可以直接通過指定 class 來加載對應(yīng)的映射文件, 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è)對應(yīng)兩個數(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純屬個人學(xué)習(xí)、工作需要,記錄相關(guān)資料。請不要發(fā)表任何有人身攻擊的言論,謝謝! www.zhipsoft.cn
    posted on 2007-01-03 10:37 ZhipSoft 閱讀(792) 評論(0)  編輯  收藏 所屬分類: Hibernate

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲AV伊人久久青青草原| 男性gay黄免费网站| 亚洲人成人网站色www| 毛色毛片免费观看| 一区二区三区四区免费视频 | 全黄A免费一级毛片| 久久亚洲精品国产亚洲老地址| 亚洲人成中文字幕在线观看| 免费一级毛片不卡在线播放| 最近最好的中文字幕2019免费| 日韩精品无码一区二区三区免费| 男女一边摸一边做爽的免费视频| 真人无码作爱免费视频| 亚洲经典千人经典日产| 国产99在线|亚洲| 亚洲婷婷在线视频| 一区二区三区亚洲| 亚洲国产日韩一区高清在线| 国产亚洲色视频在线| 亚洲中文字幕伊人久久无码| 又粗又大又长又爽免费视频| 免费看小12萝裸体视频国产| 日本免费的一级v一片| 最近2019中文字幕免费看最新 | 亚洲一级毛片中文字幕| 亚洲国产成人久久99精品| 97久久精品亚洲中文字幕无码 | yellow视频免费在线观看| 青青久久精品国产免费看| 亚洲欧美不卡高清在线| 亚洲av永久无码精品秋霞电影秋 | 日韩毛片免费无码无毒视频观看| 中文字幕免费高清视频| 亚洲啪啪免费视频| 亚洲视频在线观看免费视频| 永久在线免费观看| 免费看韩国黄a片在线观看| 成熟女人特级毛片www免费| 日韩一区二区在线免费观看| 国产成人高清精品免费软件| xvideos亚洲永久网址|