</hibernate-mapping>
映射文档在应用启动时编译,它可为Hibernate 提供关于持久对象的相应类、它们的结构、它们应该映射到哪个数据库表格、以及如何映射的信息。Hibernate 也使用这些映射文档,分别利用内建设备SchemaExport和CodeGenerator来生成相应的数据库模式和stub Java类。
4.3 生成用于持久对象的stub Java类
在创建了映射文档之后这个任务就变得简单的多。stub类的创建使用Hibernate的内建设备 CodeGenerator ,执行一个简单的命令就可以完成。,命令的语法如下:
java -cp classpath net.sf.hibernate.tool.hbm2java.CodeGenerator
options mapping_files
它为classpath、options、和mapping_files参数提供了恰当的值。下面是通过映射文档Event.hbm.xml生成的stub java 类的部分代码。
package com.ubipass.cip
public class Event {private String title;
……
Event(){ } public Long getId() {return id;
}
private void setId(Long id) {this.id = id;
}
……
}
4.4 生成数据库模式
要使用Hibernate的 SchemaExport 来生成数据库模式,在提交了用于参数的恰当值之后执行下列命令:
java -cp classpath net.sf.hibernate.tool.hbm2ddl.SchemaExport options mapping_files
此命令为classpath、options、和mapping_files 参数提供了恰当的值。图2显示了由映射文档生成的模式的外形。

图2
4.5 初始化并运行Hibernate的代码
要初始化和运行hibernate,需要采取以下步骤:
l 在恰当的类中,初始化和组装想要的持久对象 ;
l 在应用启动时使用net.sf.hibernate.cfg.Configuration 对象获取net.sf.hibernate.SessionFactory 对象 ;
l 调用SessionFactory 对象上的openSession() 方法来打开net.sf.hibernate.Session ;
l 保存想要的对象,关闭Session。
下面的代码显示了如何对上述的步骤进行实现:
// 初始化持久对象
Event ev = new Event();
ev.setDate("
ev.setTitle("Hibernate startup");
try {
//开始Hibernate
Configuration cfg = new Configuration().addClass(Event.class);
SessionFactory sf = cfg.buildSessionFactory();
//打开 Session
Session sess = sf.openSession();
} catch (HibernateException e) {
e.printStackTrace();
}
//保存 Product 并关闭 Session
Transaction t = sess.beginTransaction();
sess.save(ev);
t.commit();
sess.close();
5 总结
Hibernate是一个功能强大,可以有效地进行数据库数据到业务对象的O/R映射方案。Hibernate推动了基于普通Java对象模型,用于映射底层数据结构的持久对象的开发。通过将持久层的生成自动扩展到一个更大的范围,Hibernate 使开发人员专心实现业务逻辑而不用分心于繁琐的数据库方面的逻辑,同时提供了更加合理的模块划分的方法。
参考文献
[1] Hibernate Reference[EB/OL] http://www.hibernate.org/hib_docs/reference/html/,
[2] Roman E. Mastering EJB (2nd Edition). 北京: 机械工业出版社, 2003-01
[3] Joe ZuffoLetto BEA WebLogic Server. 北京:电子工业出版社 2003-08