kela的筆記 ORM產品 ---- hibernate(3)
Posted on 2005-11-22 13:02 Kela 閱讀(2357) 評論(2) 編輯 收藏 所屬分類: 我的筆記(Hibernate)一個Hibernate版本的“Hello World”
1. 搭建環(huán)境
建立項目:名稱為HibernateProject,如下圖:
下載Hibernate發(fā)行包:
這里使用 Hibernate3.X ,因為 Hibernate 在3.X 上性能有了更大的提升。(也可以采用 2. X的版本,3.X 和 2.X 之間的差異不多,這里的“不多”是從使用者的角度來看,在需要注意的地方,會注明,另附 3.X 和 2.X 差異表一張)
下載地址:http://www.hibernate.org 在 http://www.redsaga.com 的努力之下,Hibernate 的官方發(fā)行包中( doc\reference 下),始終有高質量的中文官方文檔,非常的感謝他們。
在ClassPath 中設置系統(tǒng)開發(fā)需要的類庫:
在項目的lib目錄下添加以下類包( .jar) 文件,并且將這些 .jar 指定在系統(tǒng) ClassPath 中。(總之,無論在哪種環(huán)境中都必須保證系統(tǒng)能找到我們設置的 .jar 。
a.數據庫驅動程序
數據庫使用 MS SQL SERVER ,以下是MS 的 JDBC 驅動。( MS 的 JDBC 驅動不是 Hibernate 官方的推薦驅動,在實際的項目中,朋友們可以根據 Hibernate 開發(fā)文檔中的配置說明進行取舍)
msbase.jar, mssqlserver.jar, msutil.jar
b.Hibernate 3.X 的類庫
將發(fā)行包下的 hibernate3.jar 文件復制到 項目(HibernateProject)的 lib 目錄下。
c.Hibernate需要的第三方類庫
將發(fā)行包下 lib 目錄下的 .jar 文件復制到項目(HibernateProject)的 lib 目錄下。
需要注意的是,我們這里將全部的 .jar 放在了lib中,在實際的開發(fā)中可以根據文檔配置的說明,進行選擇。
2. 建立數據庫
數據庫名稱:hbdb
create database hbdb;
數據表名稱:KELA_STUDENT
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KELA_STUDENT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[KELA_STUDENT]
GO
CREATE TABLE [dbo].[KELA_STUDENT] ( <hibernate-configuration> log4j.rootLogger=warn, stdout #設置顯示 error以上級別log import java.io.Serializable; public class KelaStudent implements Serializable { private static final long serialVersionUID = 8365163573354176897L; public String getStuAddress() { public void setStuAddress(String stuAddress) { public Integer getStuAge() { public void setStuAge(Integer stuAge) { public String getStuID() { public void setStuID(String stuID) { public String getStuName() { public void setStuName(String stuName) { public String getStuSex() {
[StuID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NOT NULL , -- PK
[StuName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , --學生姓名
[StuSex] [char] (1) COLLATE Chinese_PRC_CI_AS NULL , --學生性別
[StuAge] [smallint] NULL , --學生年齡
[StuAddress] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL --學生地址
) ON [PRIMARY]
GO
3. 將 發(fā)行包下 ehcache.xml 文件復制到 src 下
在Hibernate3中, 如果沒有這個文件會出現
WARN Configurator:126 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in
the classpath: jar:file:/D:/J2eeProject/HibernateProject/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
的錯誤。
該文件為 Hibernate 的本身的 Cache 配置。
4. Hibernate 配置
Hibernate 配置文件主要用于配置數據庫連接和Hibernate運行時所需要的各種屬性(如,連接池,SQL方言,是否現實SQL日志等)。
Hibernate 同時支持 xml 格式的配置文件各傳統(tǒng)的 properties 文件配置形式,這里采用 xml 。
配置文件名默認為 hibernate.cfg.xml(或 hibernage.properties),Hibernate在初始化期間自動在 classPath中尋找這個文件,并讀取其中的配置信息,并加載。
以下是 hibernate.cfg.xml 文件(在項目 HibernateProject 的src 下放以下內容):
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"
<session-factory>
<!-- 是否將運行期生成的SQL輸出到日志以供調試 -->
<property name="hibernate.show_sql">
true
</property>
<!-- SQL 方言-->
<property name="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<!-- 數據庫用戶 -->
<property name="hibernate.connection.username">
sa
</property>
<!-- 數據庫密碼 -->
<property name="hibernate.connection.password">
123456
</property>
<!-- 數據庫 JDBC 驅動-->
<property name="hibernate.connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<!-- 數據庫 URL -->
<property name="hibernate.connection.url">
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hbdb
</property>
<!-- 事務管理類型 -->
<!-- Hibernate 3 對包名做了修改 ( net.sf.hibernate => org.hibernate )-->
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<!-- c3p0 連接池 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">2</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<!-- 映射的配置文件,對應數據庫表 KELA_STUDENT 的映射文件,在后面將看到這個文件的配置 -->
<mapping resource="com/kela/hb/pojo/KelaStudent.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5. 日志配置
在Hibernate發(fā)行包的etc目錄下找到 log4j.properties 示例配置文件,可以修改其中的日志級別,也可直接使用。
在src下,放置 log4j.properties 文件,內容如下:
# log4j #
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.logger.org.hibernate=error
6. 構建 POJO 類和Hibernate映射( .hbm.xml)文件
說明:根據數據庫定義導出表結構,并自動生成對應的映射文件和POJO java代碼,是實際開發(fā)當中最常用的方式,也是專家所推薦的。可以使用 MiddleGen -- Hibernate,Hibernate -- Extensions 等的工具,這些工具的使用非常的方便,只修修改相應的 ant 構建文件即可,在網絡上可以很容易的找到這些工具的使用方法。
這里采用手工編寫 POJO 和映射文件的方法,是基于開發(fā)者更好理解 Hibernate 運作機制而考慮。付出手工編寫會產生疏漏和錯誤的代價,我覺得在學習階段是值得的。
以下是這兩個文件,他們的位置都在 com.kela.hb.pojo 下面。
POJO類:com.kela.hb.pojo.KelaStudent
/**
* KelaStudent.java
*/
package com.kela.hb.pojo;
String stuID;
String stuName;
String stuSex;
Integer stuAge;
String stuAddress;
public KelaStudent() {
}
return stuAddress;
}
this.stuAddress = stuAddress;
}
return stuAge;
}
this.stuAge = stuAge;
}
return stuID;
}
this.stuID = stuID;
}
return stuName;
}
this.stuName = stuName;
}
return stuSex;
}