在没有正式开始旅行之前,让我们区分几个名词。POJO:在 Hibernate 中代表包含 Seter、Geter 这些最基本操作的值对象。而 BO:代表包含一些业务逻辑的值对象,它的作用域很大,也就是说 BO 在充当持久类的同时可以传到 UI 层。PO:代表持久对象,是纳入 Hibernate 管理框架中的,在一定程度上可以和值对象的概念互换,值对象经过 Hibernate 进行处理,就变成了 PO 。Hibernate 配置文件:hibernate.cfg.xml 或 hibernate.properties,不过推荐使用 XML 格式。映射文件 *.hbm.xml:映射文件的作用是将 POJO 与关系型数据库数据相绑定,作为一个桥梁。另外,为数据库中的表进行手工编写映射文件可不是件好差事,幸好开源社区中也有一群同样想法的人,他们开发了 hibernateSynchronizer 映射工具,可到 http://www.binamics.com/hibernatesync/eclipse2.1/ 下载。
好了,现在去 http://www.hibernate.org 下载 Hibernate 的开发包(目前的版本是 2.1.6)。接着打开 Eclipse 2.1,在更新管理器中安装 hibernateSynchronizer。据说 Eclipse 3.0 已内置映射工具,不过我没有试。安装完毕后,新建一个 Web 应用程序 HibernateTest,接着为这个应用程序添加 Hibernate 类库 hibernate-2.1.6\hibernate-2.1\hibernate2.jar 及其依赖类库、数据库连接包,强烈建议把 hibernate-2.1.6\hibernate-2.1\lib 下的所有类库全部加载,如下图:
接着使用 hibernateSynchronizer 来生成 hibernate.cfg.xml 文件,新建——>其他——>Hibernate Configuration File,我使用的是 SQL Server 数据库,各项配置参数见下图:
生成出来的 hibernate.cfg.xml 文件:
在项目的 src 目录下新建四个包,分别是bo、bo.base、bo.mapping、com.dao,具体什么作用,到时候他们都会一一呈献。在开始映射文件前还要做一件事,为应用程序 HibernateTest 配置 hibernateSynchronizer ,我更喜欢自己写 DAO ,所以没有配置 Data Access Objects,其他各项参数如下图:
被映射的表 AutoInfo 结构如下,id为其主键:
新建——>其他——>Hibernate Mapping File,配置好参数再“Refresh”后,选择要映射的表,注意千万不要在 800*600 下映射文件!否则有些按钮不会出现,各项配置参数见下图:
终于、终于,映射文件 AutoInfo.hbm.xml 终于出来了!
<?xml version="1.0"?> <hibernate-mapping package="bo.base">
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<class name="AutoInfo" table="AutoInfo">
<property
column="owner_dept"
length="500"
name="OwnerDept"
not-null="false"
type="string"
/>
<property
column="license_plate"
length="50"
name="LicensePlate"
not-null="false"
type="string"
/>
<property
column="owner"
length="50"
name="Owner"
not-null="false"
type="string"
/>
<property
column="owner_adderss"
length="1000"
name="OwnerAdderss"
not-null="false"
type="string"
/>
<property
column="id"
length="18"
name="Id"
not-null="true"
type="integer"
/>
</class>
</hibernate-mapping>
<?xml version="1.0"?> <hibernate-mapping package="bo.base"> |
需要修改一下 AutoInfo.hbm.xml 文件为其定义主键,把:
<property
column="id"
length="18"
name="Id"
not-null="true"
type="integer"
/>
<property column="id" length="18" name="Id" not-null="true" type="integer" /> |
替换为:
<id name="Id" column="id" type="integer">
<generator class="native"/>
</id>
<id name="Id" column="id" type="integer"> <generator class="native"/> </id> |
再接再厉,为映射文件生成 POJO。修改 hibernate.cfg.xml 文件在 </session-factory> 标签的上面加上刚才映射的文件 <mapping resource="bo/mapping/AutoInfo.hbm.xml" />。接着在“包资源管理器”中点击 AutoInfo.hbm.xml 右键,Hibernate Synchronizer——>Synchronize Files。再看看 src 中的包:
O/R Mapping 的旅程先到这里吧,后面的路将会越来越坎坷!你准备好了吗?