和風(fēng)細(xì)雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運(yùn)用之術(shù)自出。

          Hibernate的配置文件

          獲取Hibernate

          在創(chuàng)建Hibernate項(xiàng)目之前,我們需要從網(wǎng)站獲得最新的Hibernate版本。Hibernate主頁是www.hibernate.org,找到其菜單中的download連接,選擇最新的Hibernate版本即可。下載后將其解開到一個(gè)目錄中。
          右邊是解開后的主要目錄。其中最重要的是hibernate.jar,它包含全部框架代碼;lib目錄,包括Hibernate的所有依賴庫;doc目錄,包括JavDocs和參考文檔。

          Hibernate的配置文件

          Hibernate能夠與從應(yīng)用服務(wù)器(受控環(huán)境,如Tomcat,Weblogic,JBoss)到獨(dú)立的應(yīng)用程序(非受控環(huán)境,如獨(dú)立應(yīng)用程序)的各種環(huán)境和諧工作,這在一定程度上要?dú)w功于其配置文件hibernate.cfg.xml,通過特定的設(shè)置Hibernate就能與各種環(huán)境配合。右邊是hibernate.cfg.xml的一個(gè)示例。
          配置Hibernate的所有屬性是一項(xiàng)艱巨的任務(wù),下面將依此介紹Hibernate部署將用到的基本配置。

          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>
            <session-factory name="java:comp/env/hibernate/SessionFactory">
              <!-- JNDI數(shù)據(jù)源設(shè)置 -->
              <property name="connection.datasource">
                java:comp/env/jdbc/myoracle
              </property>

              <!-- SQL方言,org.hibernate.dialect.OracleDialect適合所有Oracle數(shù)據(jù)庫 -->
              <property name="dialect">
                org.hibernate.dialect.OracleDialect
              </property>

              <!-- 顯示SQL語句 -->
              <property name="show_sql">true</property>
             
              <!-- SQL語句整形 -->
              <property name="format_sql">true</property>
             
              <!-- 啟動(dòng)時(shí)創(chuàng)建表.這個(gè)選項(xiàng)在第一次啟動(dòng)程序時(shí)放開,以后切記關(guān)閉 -->
                  <!-- <property name="hbm2ddl.auto">create</property>  -->
                     
              <!-- 持久化類的配置文件 -->
              <mapping resource="com/sitinspring/domain/User.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Article.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Record.hbm.xml" />
            </session-factory>
          </hibernate-configuration>

          使用Hibernate管理的JDBC連接

          右邊配置文件中的Database connection settings 部分制定了Hibernate管理的JDBC連接, 這在非受控環(huán)境如桌面應(yīng)用程序中很常見。
          其中各項(xiàng)屬性為:
          connection.driver_class:用于特定數(shù)據(jù)庫的JDBC連接類
          connection.url:數(shù)據(jù)庫的完整JDBC URL
          connection.username:用于連接到數(shù)據(jù)庫的用戶名
          connection.password:用戶密碼

          這種方案可用于非受控環(huán)境和基本測試,但不宜在生產(chǎn)環(huán)境中使用。

          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

              <session-factory>

                  <!-- Database connection settings -->
                  <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
                  <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
                  <property name="connection.username">sa</property>
                  <property name="connection.password"></property>

                  <!-- JDBC connection pool (use the built-in) -->
                  <property name="connection.pool_size">1</property>

                  <!-- SQL dialect -->
                  <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

                  <!-- Enable Hibernate's automatic session context management -->
                  <property name="current_session_context_class">thread</property>

                  。。。。。。。。

              </session-factory>

          </hibernate-configuration>

          使用JNDI 數(shù)據(jù)源

          在受控環(huán)境中,我們可以使用容器提供的數(shù)據(jù)源,這將使數(shù)據(jù)庫訪問更加快捷,右邊就是使用Tomcat提供的數(shù)據(jù)源的配置部分。

          附:Server.Xml中的數(shù)據(jù)源設(shè)置

          <Context path="/MyTodoes" reloadable="true" docBase="E:\Program\Programs\MyTodoes" workDir="E:\Program\Programs\MyTodoes\work" >
           <Resource name="jdbc/myoracle" auth="Container"
                    type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
                    url="jdbc:oracle:thin:@192.168.104.173:1521:orcl"
                    username="hy" password="123456" maxActive="20" maxIdle="10"
                    maxWait="-1"/>
          </Context>

          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>
            <session-factory name="java:comp/env/hibernate/SessionFactory">
              <!-- JNDI數(shù)據(jù)源設(shè)置 -->
              <property name="connection.datasource">
                java:comp/env/jdbc/myoracle
              </property>

              <!-- SQL方言,org.hibernate.dialect.OracleDialect適合所有Oracle數(shù)據(jù)庫 -->
              <property name="dialect">
                org.hibernate.dialect.OracleDialect
              </property>


          </hibernate-configuration>

          數(shù)據(jù)庫方言

          Dialect屬性能告知Hibernate執(zhí)行特定的操作如分頁時(shí)需要使用那種SQL方言,如MySql的分頁方案和Oracle的大相徑庭,如設(shè)置錯(cuò)誤或沒有設(shè)置一定會導(dǎo)致問題。

          附錄:常見的數(shù)據(jù)庫方言
          DB2 :org.hibernate.dialect.DB2Dialect
          MySQL :org.hibernate.dialect.MySQLDialect
          Oracle (any version) :org.hibernate.dialect.OracleDialect
          Oracle 9i/10g :org.hibernate.dialect.Oracle9Dialect
          Microsoft SQL Server :org.hibernate.dialect.SQLServerDialect
          Sybase Anywhere :org.hibernate.dialect.SybaseAnywhereDialect

          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>
            <session-factory name="java:comp/env/hibernate/SessionFactory">
              <!-- JNDI數(shù)據(jù)源設(shè)置 -->
              <property name="connection.datasource">
                java:comp/env/jdbc/myoracle
              </property>

              <!-- SQL方言,org.hibernate.dialect.OracleDialect適合所有Oracle數(shù)據(jù)庫 -->
              <property name="dialect">
                org.hibernate.dialect.OracleDialect
              </property>

              <!-- 顯示SQL語句 -->
              <property name="show_sql">true</property>
             
              <!-- SQL語句整形 -->
              <property name="format_sql">true</property>
             
          </hibernate-configuration>

          其它屬性

          show_sql:它可以在程序運(yùn)行過程中顯示出真正執(zhí)行的SQL語句來,建議將這個(gè)屬性始終打開,它將有益于錯(cuò)誤診斷。

          format_sql:將這個(gè)屬性設(shè)置為true能將輸出的SQL語句整理成規(guī)范的形狀,更方便用于查看SQL語句。

          hbm2ddl.auto:將其設(shè)置為create能在程序啟動(dòng)是根據(jù)類映射文件的定義創(chuàng)建實(shí)體對象對應(yīng)的表,而不需要手動(dòng)去建表,這在程序初次安裝時(shí)很方便。
          如果表已經(jīng)創(chuàng)建并有數(shù)據(jù),切記關(guān)閉這個(gè)屬性,否則在創(chuàng)建表時(shí)也會清除掉原有的數(shù)據(jù),這也許會導(dǎo)致很嚴(yán)重的后果。
          從后果可能帶來的影響來考慮,在用戶處安裝完一次后就應(yīng)該刪除掉這個(gè)節(jié)點(diǎn)

          <hibernate-configuration>
            <session-factory name="java:comp/env/hibernate/SessionFactory">
          。。。。。。

              <!-- 顯示SQL語句 -->
              <property name="show_sql">true</property>
             
              <!-- SQL語句整形 -->
              <property name="format_sql">true</property>
             
              <!-- 啟動(dòng)時(shí)創(chuàng)建表.這個(gè)選項(xiàng)在第一次啟動(dòng)程序時(shí)放開,以后切記關(guān)閉 -->
                  <!-- <property name="hbm2ddl.auto">create</property>  -->
                     
          。。。。。。
          </hibernate-configuration>

          映射定義

          在hibernate.cfg.xml中,還有一個(gè)重要部分就是映射定義,這些文件用于向Hibernate提供關(guān)于將對象持久化到關(guān)系數(shù)據(jù)庫的信息。
          一般來說,領(lǐng)域?qū)佑幸粋€(gè)領(lǐng)域?qū)ο缶陀幸粋€(gè)映射文件,建議將它們放在同一目錄(domain)下以便查閱和修改,映射文件的命名規(guī)則是:持久化類的類名+.hbm.xml

          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>
            <session-factory name="java:comp/env/hibernate/SessionFactory">
              <!-- JNDI數(shù)據(jù)源設(shè)置 -->
              <property name="connection.datasource">
                java:comp/env/jdbc/myoracle
              </property>

          。。。。。。
                     
              <!-- 持久化類的配置文件 -->
              <mapping resource="com/sitinspring/domain/User.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Article.hbm.xml" />
              <mapping resource="com/sitinspring/domain/Record.hbm.xml" />
            </session-factory>
          </hibernate-configuration>

          posted on 2008-04-30 16:40 和風(fēng)細(xì)雨 閱讀(2626) 評論(0)  編輯  收藏 所屬分類: Hibernate

          主站蜘蛛池模板: 德州市| 卢湾区| 安庆市| 阳谷县| 绍兴县| 南召县| 额敏县| 太和县| 晋宁县| 额尔古纳市| 永丰县| 德阳市| 高阳县| 邹城市| 米易县| 麦盖提县| 黎城县| 西乌珠穆沁旗| 舞钢市| 临高县| 曲麻莱县| 武威市| 宣武区| 台北市| 兴安县| 胶南市| 安义县| 永平县| 仙游县| 伊春市| 元谋县| 安福县| 陈巴尔虎旗| 岑溪市| 城市| 龙川县| 漠河县| 揭阳市| 绥德县| 桐庐县| 莱芜市|