- 使用Hibernate框架輕松連接數據庫(藍橋杯軟件大賽培訓教材-Java方向)
- 工業和信息化部人才交流中心藍橋杯軟件大賽專家委員會編著
- 852字
- 2018-12-27 17:47:35
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來連接數據庫了。