首先要感谢我所在的
Team
意识到了传统
JDBC
开发的种种不足,转而开始关注
O/R Mapping
领域的成果。说到
O/R Mapping
,我认为在对象数据库还没有真正成熟的时候它是一个不错的选择,看看
SUN
的
JDO 2.0
规范吧,它的即将发布将会把这个领域推向更高的境界。再看看我们的开源社区呢,喔!发现了
Hibernate
!从现在开始,我的焦点将放在
Hibernate
上面,一个优秀的
O/R Mapping
工具。
在没有正式开始旅行之前,让我们区分几个名词。
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"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd
" >
<hibernate-mapping package="bo.base"> <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>
|
需要修改一下 AutoInfo.hbm.xml 文件为其定义主键,把:
<property column="id" length="18" name="Id" not-null="true" type="integer" />
|
替换为:
<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 的旅程先到这里吧,后面的路将会越来越坎坷!你准备好了吗?
请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://www.blogjava.net/rosen