其实Hibernate本身是个独立的框架
它不需要任何web server或application server的支持
然而
大多数的Hibernate入门介绍都加入了很多非Hibernate的东西
比如
Tomcat
Eclipse
Log
J
Struts
XDoclet
甚至JBoss
这容易让人产生Hibernate复杂难懂的误解
特别是打击了初学者的积极性
在这篇文章将不涉及Eclipse logj Struts Tomcat XDoclet和JBoss本文的目的是演示一下Hibernate的安装过程以及最基本的功能从而给初学者一个低得不能再低的入门门槛
下载文件
你需要Java SDK Hibernate包Ant包和JDBC Driver
配置Hibernate环境
你需要添加一个新的环境变量 ANT_HOME让它指向c:\dev\< 你的ANT包所在目录>并在PATH环境变量里添加%ANT_HOME%\bin
你需要添加一个新的环境变量 JAVA_HOME让它指向你的jsdk根目录并在PATH环境变量里添加%JAVA_HOME%\bin
创建一个项目目录比如c:\workspace\MystHibernate
在项目目录下另外创建三个目录 src classes lib
在lib目录下创建两个目录 hibernate和db
这样你有了如下的文件结构
c:\workspace\MystHibernate\
c:\workspace\MystHibernate\src
c:\workspace\MystHibernate\classes
c:\workspace\MystHibernate\lib
c:\workspace\MystHibernate\lib\hibernate
c:\workspace\MystHibernate\lib\db
将c:\dev\< 你的Hibernate包所在目录>\hibernatejar文件copy到c:\workspace\MystHibernate\lib\hibernate下
将c:\dev\< 你的Hibernate包所在目录>\lib\下的所有文件同样copy到c:\workspace\MystHibernate\lib\hibernate下
将你的JDBC Driver文件(一般是一个jar文件)copy到c:\workspace\MystHibernate\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) {
thisid = id;
}
public void setPassword(String password) {
thispassword = password;
}
public void setUsername(String username) {
thisusername = username;
}
}
将此类存为c:\workspace\MystHibernate\src\Customerjava文件
编写Test类
import netsfhibernate*;
import netsfhibernatecfg*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf =
new Configuration()configure()buildSessionFactory()
Session session = sfopenSession()
Transaction tx = sessionbeginTransaction()
for (int i = ; i < ; i++) {
Customer customer = new Customer()
customersetUsername(customer + i)
customersetPassword(customer)
sessionsave(customer)
}
mit()
sessionclose()
} catch (HibernateException e) {
eprintStackTrace()
}
}
}
将此类存为c:\workspace\MystHibernate\src\Testjava文件
创建Hibernate映射文件
因为这里只有一个Class Customer 和一个Table CUSTOMER你只需要建立一个映射文件 Customerhbmxml来对应Customer类和CUSTOMER表之间的关系
< ?xml version=?> < !DOCTYPE hibernatemapping PUBLIC
//Hibernate/Hibernate Mapping DTD//EN
hiber/hibernatemappingdtd> < hibernatemapping>
< 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> < /hibernatemapping> 把此文件存为c:\workspace\MystHibernate\src\Customerhbmxml和Customerjava放在同一目录下
编写Ant buildxml文件
你不一定要知道这个buildxml的细节其实Ant也不是Hibernate所必须的这里用Ant是为了简化一些任务比如 编译copy运行等
< ?xml version= ?> < project name=MystHibernate default=build basedir=>
< property name=basedir value= />
< property name=srcdir value=src />
< property name=libdir value=lib />
< property name=builddir value=classes />
< path id=myclasspath>
< fileset dir=${libdir}>
< include name=**/*jar />
< /fileset>
< pathelement location=${builddir} />
< /path>
< target name=init>
< mkdir dir=${builddir} />
< /target>
< target name=build depends=init description=compile the source files>
< javac classpat srcdir=${srcdir} destdir=${builddir} />
< copy todir=${builddir} >
< fileset dir=${srcdir} >
< 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=${builddir} />
< /delete>
< /target> < /project>
配置Hibernate描述文件
Hibernate描述文件可以是一个properties或xml 文件其中最重要的是定义数据库的连接我这里列出的是一个XML格式的hibernatecfgxml描述文件
< ?xml version= encoding=utf ?> < !DOCTYPE hibernateconfiguration
PUBLIC //Hibernate/Hibernate Configuration DTD//EN
//hiber/hibernateconfigurationdtd> < hibernateconfiguration>
< sessionfactory name=java:/hibernate/HibernateFactory>
< property name=show_sql>true< /property>
< property name=connectiondriver_class>
oraclejdbcdriverOracleDriver < ! 这里是Oracle i的JDBC driver class名 >
< /property>
< property name=connectionurl>
jdbc:oracle:oci:@hibernate_test < ! 这里是Oracle的hibernate_test数据库URL >
< /property>
< property name=connectionusername>
你的数据库用户名
< /property>
< property name=connectionpassword>
你的数据库密码
< /property>
< property name=dialect>
netsfhibernatedialectOracleDialect < ! 这里是Oracle i的Dialect >
< /property>
< mapping resource=Customerhbmxml /> < ! 指定Customer的映射文件 >
< /sessionfactory> < /hibernateconfiguration>如果你用的不是Oracle i可到C:\dev\< 你的Hibernate包所在目录>\src\hibernateproperties文件里找到你的数据库然后替换以上相对应的值
开始运行
到c:\workspace\MystHibernate下运行ant run如果你严格依照以上步骤应该看到
run:
[java] logj:WARN No appenders could be found for logger (netsfhibernatecfgEnvironment)
[java] logj:WARN Please initialize the logj system properly
[java] Hibernate: insert into CUSTOMER (USERNAME PASSWORD CID) values (? ? ?)
BUILD SUCCESSFUL 到你的hibernate_test数据库看一下在CUSTMOR表里新添了条记录但你没有写任何JDBC code
以后如果你要更换数据库只需要改变hibernatecfgxml描述文件里相应的值即可
Hibernate入门介绍结论
此文是一篇门槛极低的入门介绍我给一个完全不懂Hibernate的朋友看他用了不到分钟就运行了他的第一个Hibernate程序从此引起了 他对Hibernate的兴趣但读者必须认识到这只是一个开始此文实乃窥Hibernate冰山一角上的一颗小冰晶千里之行始于足下你可以把此文 当作迈向Hibernate大道的一个起点