其實Hibernate本身是個獨立的框架
它不需要任何web server或application server的支持
然而
大多數的Hibernate入門介紹都加入了很多非Hibernate的東西
比如
Tomcat
Eclipse
Log
J
Struts
XDoclet
甚至JBoss
這容易讓人產生Hibernate復雜難懂的誤解
特別是打擊了初學者的積極性
在這篇文章將不涉及Eclipse
log
j
Struts
Tomcat
XDoclet
和JBoss
本文的目的是演示一下Hibernate的安裝過程以及最基本的功能
從而給初學者一個低得不能再低的入門門檻
下載文件
你需要Java SDK
Hibernate包
Ant包
和JDBC Driver
配置Hibernate環境
你需要添加一個新的環境變量
ANT_HOME
讓它指向c:\dev\< 你的ANT包所在目錄>
並在PATH環境變量裡添加%ANT_HOME%\bin
你需要添加一個新的環境變量
JAVA_HOME
讓它指向你的j
sdk根目錄
並在PATH環境變量裡添加%JAVA_HOME%\bin
創建一個項目目錄
比如c:\workspace\My
stHibernate
在項目目錄下
另外創建三個目錄
src
classes
lib
在lib目錄下
創建兩個目錄
hibernate和db
這樣你有了如下的文件結構
c:\workspace\My
stHibernate\
c:\workspace\My
stHibernate\src
c:\workspace\My
stHibernate\classes
c:\workspace\My
stHibernate\lib
c:\workspace\My
stHibernate\lib\hibernate
c:\workspace\My
stHibernate\lib\db
將c:\dev\< 你的Hibernate包所在目錄>\hibernate
jar文件copy到c:\workspace\My
stHibernate\lib\hibernate下
將c:\dev\< 你的Hibernate包所在目錄>\lib\下的所有文件同樣copy到c:\workspace\My
stHibernate\lib\hibernate下
將你的JDBC Driver文件(一般是一個jar文件)copy到c:\workspace\My
stHibernate\lib\db下
創建數據庫
用你最喜愛的database軟件
創建一個hibernate_test的數據庫
在此數據庫下
新建一個table名為CUSTOMER
CREATE TABLE CUSTOMER
(
CID INTEGER NOT NULL PRIMARY KEY
USERNAME VARCHAR(
) NOT NULL
PASSWORD VARCHAR(
)
)
編寫Java文件
public class Customer {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public void setId(int id) {
this
id = id;
}
public void setPassword(String password) {
this
password = password;
}
public void setUsername(String username) {
this
username = username;
}
}
將此類存為c:\workspace\My
stHibernate\src\Customer
java文件
編寫Test類
import net
sf
hibernate
*;
import net
sf
hibernate
cfg
*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf =
new Configuration()
configure()
buildSessionFactory()
Session session = sf
openSession()
Transaction tx = session
beginTransaction()
for (int i =
; i <
; i++) {
Customer customer = new Customer()
customer
setUsername(
customer
+ i)
customer
setPassword(
customer
)
session
save(customer)
}
mit()
session
close()
} catch (HibernateException e) {
e
printStackTrace()
}
}
}
將此類存為c:\workspace\My
stHibernate\src\Test
java文件
創建Hibernate映射文件
因為這裡只有一個Class
Customer 和一個Table
CUSTOMER
你只需要建立一個映射文件
Customer
hbm
xml
來對應Customer類和CUSTOMER表之間的關系
< ?xml version=
?> < !DOCTYPE hibernate
mapping PUBLIC
//Hibernate/Hibernate Mapping DTD//EN
hiber/hibernate
mapping
dtd
> < hibernate
mapping>
< class name=
Customer
table=
CUSTOMER
>
< id name=
id
column=
CID
>
< generator class=
increment
/>
< /id>
< property name=
username
column=
USERNAME
/>
< property name=
password
column=
PASSWORD
/>
< /class> < /hibernate
mapping> 把此文件存為c:\workspace\My
stHibernate\src\Customer
hbm
xml
和Customer
java放在同一目錄下
編寫Ant build
xml文件
你不一定要知道這個build
xml的細節
其實Ant也不是Hibernate所必須的
這裡用Ant是為了簡化一些任務
比如
編譯
copy
運行
等
< ?xml version=
?> < project name=
My
stHibernate
default=
build
basedir=
>
< property name=
base
dir
value=
/>
< property name=
src
dir
value=
src
/>
< property name=
lib
dir
value=
lib
/>
< property name=
build
dir
value=
classes
/>
< path id=
myclasspath
>
< fileset dir=
${lib
dir}
>
< include name=
**/*
jar
/>
< /fileset>
< pathelement location=
${build
dir}
/>
< /path>
< target name=
init
>
< mkdir dir=
${build
dir}
/>
< /target>
< target name=
build
depends=
init
description=
compile the source files
>
< javac classpat srcdir=
${src
dir}
destdir=
${build
dir}
/>
< copy todir=
${build
dir}
>
< fileset dir=
${src
dir}
>
< exclude name=
**/*
java
/>
< /fileset>
< /copy>
< /target>
< target name=
run
depends=
build
>
< java classpat classname=
Test
fork=
true
/>
< /target>
< target name=
clean
>
< delete includeEmptyDirs=
true
>
< fileset dir=
${build
dir}
/>
< /delete>
< /target> < /project>
配置Hibernate描述文件
Hibernate描述文件可以是一個properties或xml 文件
其中最重要的是定義數據庫的連接
我這裡列出的是一個XML格式的hibernate
cfg
xml描述文件
< ?xml version=
encoding=
utf
?> < !DOCTYPE hibernate
configuration
PUBLIC
//Hibernate/Hibernate Configuration DTD//EN
//hiber/hibernate
configuration
dtd
> < hibernate
configuration>
< session
factory name=
java:/hibernate/HibernateFactory
>
< property name=
show_sql
>true< /property>
< property name=
connection
driver_class
>
oracle
jdbc
driver
OracleDriver < !
這裡是Oracle
i的JDBC driver class名
>
< /property>
< property name=
connection
url
>
jdbc:oracle:oci
:@hibernate_test < !
這裡是Oracle的hibernate_test數據庫URL
>
< /property>
< property name=
connection
username
>
你的數據庫用戶名
< /property>
< property name=
connection
password
>
你的數據庫密碼
< /property>
< property name=
dialect
>
net
sf
hibernate
dialect
Oracle
Dialect < !
這裡是Oracle
i的Dialect
>
< /property>
< mapping resource=
Customer
hbm
xml
/> < !
指定Customer的映射文件
>
< /session
factory> < /hibernate
configuration>如果你用的不是Oracle
i
可到C:\dev\< 你的Hibernate包所在目錄>\src\hibernate
properties文件裡找到你的數據庫
然後替換以上相對應的值
開始運行
到c:\workspace\My
stHibernate下
運行ant run
如果你嚴格依照以上步驟
應該看到
run:
[java] log
j:WARN No appenders could be found for logger (net
sf
hibernate
cfg
Environment)
[java] log
j:WARN Please initialize the log
j system properly
[java] Hibernate: insert into CUSTOMER (USERNAME
PASSWORD
CID) values (?
?
?)
BUILD SUCCESSFUL 到你的hibernate_test數據庫看一下
在CUSTMOR表裡新添了
條記錄
但你沒有寫任何JDBC code
以後如果你要更換數據庫
只需要改變hibernate
cfg
xml描述文件裡相應的值即可
Hibernate入門介紹結論
此文是一篇門檻極低的入門介紹
我給一個完全不懂Hibernate的朋友看
他用了不到
分鐘就運行了他的第一個Hibernate程序
從此引起了 他對Hibernate的興趣
但讀者必須認識到這只是一個開始
此文實乃窺Hibernate冰山一角上的一顆小冰晶
千裡之行始於足下
你可以把此文 當作邁向Hibernate大道的一個起點
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28911.html