官术网_书友最值得收藏!

1.3 搭建項目框架

操作系統:Windows XP/Windows 7。

開發環境:Eclipse3.6,JDK6,Servlet3.0。

Web服務器:Tomcat7。

數據庫服務器:Oradelog。

1.3.1 創建項目并導入jar包

(1)在Eclipse中創建一個Dynamic Web Project,取名5iJob。

(2)下載Hibernate,可以在http://sourceforge.net/projects/hibernate/files/hibernate4/頁面找到下載鏈接,在頁面下方選擇要下載的版本,需要下載的是hibernate-release-4.2.0.Final.zip。

(3)解壓后,打開lib→required目錄下面的jar包,將其導入到工程中。

(4)導入數據庫的JDBC驅動包,本項目采用oracle10g作為數據庫,使用ojdbc14.jar(也可以使用Oracle11g的驅動包ojdbc6.jar,該包支持JDK6.0)。

(5)如Hibernate官方文檔所說,Hibernate的連接池不能應用于產品環境(可用于開發和測試環境),建議使用第三方的更為優秀的連接池。這里采用c3p0數據庫連接池,需要下載并導入c3p0-0.9.2.1.jar和mchange-commons-java-0.2.3.4.jar。

(6)考慮到JSP中要使用JSTL,所以jstl.jar和standard.jar也是需要的,所有導入到項目中的jar包如圖1.5所示。

圖1.5 準備階段所需jar包

1.3.2 編寫配置文件

創建hibernate.cfg.xml,保存在工程的src目錄下,編寫數據庫連接的配置信息,具體代碼如下:

        <?xml version='1.0' encoding='utf-8'?>
        <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
        <hibernate-configuration>
            <session-factory>
                <!-- 數據庫連接URL-->
                <property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
                <!-- 數據庫用戶名 -->
                <property name="connection.username">oa</property>
                <!-- 數據庫密碼 -->
                <property name="connection.password">oa123</property>
                <!-- 數據庫JDBC驅動類名 -->
                <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
                <!-- 數據庫方言 -->
                <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
                <!--ddl語句自動建表 -->
                <property name="hbm2ddl.auto">none</property>
                <!-- 是否輸出Hibernate生成的SQL語句,開發階段一般需要開啟 -->
                <property name="show_SQL">true</property>
                <!-- 是否對輸出SQL進行格式化 -->
                <property name="format_SQL">true</property>
                <!-- 連接池配置 -->
                <property name="hibernate.connection.provider_class">
                    org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
                </property>
                <!-- 這是C3P0隨時準備好的最少的JDBC連接數量 -->
                <property name="hibernate.c3p0.min_size">5</property>
                <!-- 連接池中JDBC連接的最大數量 -->
                <property name="hibernate.c3p0.max_size">20</property>
                <!-- 超時周期,在它之后,閑置連接將從池中移除 -->
                <property name="hibernate.c3p0.timeout">300</property>
                <!-- 最多高速緩存100個預編譯語句,該屬性是使Hibernate獲得較好性能的要素 -->
                <property name="hibernate.c3p0.max_statements">100</property>
                <!-- 連接被自動驗證前,以秒為單位的閑置時間 -->
                <property name="hibernate.c3p0.idle_test_period">3000</property>
                <!-- 注冊ORM實體類映射文件-->
                <mapping resource="實體類映射文件路徑" />
                …
            </session-factory>
        </hibernate-configuration>

以上Hibernate配置文件由四部分信息組成:

(1)數據庫連接信息,包括驅動程序類名、連接URL、用戶名和密碼。

(2)Hibernate相關特性,包括dialect(方言)、show_SQL(輸出SQL語句到控制臺)、format_SQL(格式化SQL語句)。

(3)連接池相關信息。

(4)實體類映射文件,實體類與數據庫表之間的邏輯映射。

這里有必要介紹一下dialect(方言)。屬性<property name="dialect">…</property>指定的是數據庫方言。用戶應當根據正在使用的數據庫將hibernate.dialect屬性設置成對應的數據庫方言(org.hibernate.dialect.Dialect子類)。本例中,由于數據庫采用Oracle10g,所以該項被配置為org.hibernate.dialect. Oracle10gDialect。

ORM有自動的SQL生成機制,大部分時候,數據庫操作都是通過標準SQL來完成,但有時需要使用數據庫特有的語句,如分頁語句、函數等。方言正是用于這些時候,指導Hibernate如何生成SQL。Hibernate采用方言屬性,可以屏蔽各數據庫之間的差異,使得應用程序更加方便地從一種數據庫遷移到另一種數據庫。

1.3.3 測試連接及基本配置

創建/5iJob/src/org/bd/hibernate/test/HibernateTest.java,測試配置是否正確。具體代碼如下:

        import org.hibernate.SessionFactory;
        import org.hibernate.cfg.Configuration;
        import org.hibernate.service.ServiceRegistry;
        import org.hibernate.service.ServiceRegistryBuilder;
        public class HibernateTest {
            public static void main(String[] args) {
                //獲取配置,默認讀取classpath根目錄下名為hibernate.cfg.xml的文件
                Configuration cfg = new Configuration().configure();
                ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).
                buildServiceRegistry();
                //創建SessionFactory
                SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
                //獲取Session
                System.out.println(factory.openSession());
            }
        }

運行這個類,如果沒有拋出異常,打印出信息,則證明已經可以通過Hibernate來連接數據庫了。

主站蜘蛛池模板: 兴隆县| 石狮市| 名山县| 改则县| 涿州市| 富阳市| 丹棱县| 宣威市| 阿巴嘎旗| 慈利县| 新乡县| 徐水县| 漠河县| 泾川县| 景泰县| 西乌珠穆沁旗| 大方县| 钟山县| 随州市| 福安市| 方正县| 靖远县| 黄骅市| 兴文县| 清徐县| 托克逊县| 会泽县| 江孜县| 湘乡市| 邯郸县| 云林县| 日照市| 桓仁| 武穴市| 大化| 泰州市| 南雄市| 江安县| 察哈| 馆陶县| 抚宁县|