我的 O/R Mapping 之旅(一)(转载+补充)

原创 2005年01月03日 22:09:00
转载于:http://blog.csdn.net/rosen/archive/2004/11/12/179646.aspx

    首先要感谢我所在的 Team 意识到了传统 JDBC 开发的种种不足,转而开始关注 O/R Mapping 领域的成果。说到 O/R Mapping,我认为在对象数据库还没有真正成熟的时候它是一个不错的选择,看看 SUN JDO 2.0 规范吧,它的即将发布将会把这个领域推向更高的境界。再看看我们的开源社区呢,喔!发现了 Hibernate!从现在开始,我的焦点将放在 Hibernate 上面,一个优秀的O/R Mapping 工具。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

    在没有正式开始旅行之前,让我们区分几个名词。POJO:在 Hibernate 中代表包含 SeterGeter 这些最基本操作的值对象。而 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 Configration file中
Driver表格右边按browse,在Select entries中填写com.microsoft.jdbc.sqlserver.SQLServerDriver

生成出来的 hibernate.cfg.xml 文件:


   在项目的 src 目录下新建四个包,分别是bobo.basebo.mappingcom.dao,具体什么作用,到时候他们都会一一呈献。在开始映射文件前还要做一件事,为应用程序 HibernateTest 配置 hibernateSynchronizer ,我更喜欢自己写 DAO ,所以没有配置 Data Access Objects,其他各项参数如下图:

被映射的表 AutoInfo 结构如下,id为其主键:

 新建——>其他——>Hibernate Mapping File,配置好参数再“Refresh”后,选择要映射的表,注意千万不要在 800*600 下映射文件!否则有些按钮不会出现,各项配置参数见下图:





补充:
在Hibernate mapping file中
Driver表格右边按browse,在Select entries中填写com.microsoft.jdbc.sqlserver.SQLServerDriver

database URL填写:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=YourDatabaseName
然后按Refresh按钮。
我的电脑报错:
Error establishing connection
[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
google半天结果发现:只要是windows 2003+SQLServer2000都会有这个问题,原因是sqlserver2000因安全问题被windows2003默认禁止了。只要打上sqlserver 2000 sp3补丁就成功了。

       终于、终于,映射文件 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 中的包:

                t_7.jpg

   

    O/R Mapping 的旅程先到这里吧,后面的路将会越来越坎坷!你准备好了吗?



(请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://blog.csdn.net/rosen


 

深入理解O/R Mapping

什么是O/R Mapping? 广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据...
  • nszkadrgg
  • nszkadrgg
  • 2013年01月06日 09:54
  • 804

用Java实现简单的 O/R Mapping 模拟

程序运行条件:MySQL数据库 请自行配置数据库信息,在session.ja
  • jinzaizhangwo
  • jinzaizhangwo
  • 2014年06月10日 14:32
  • 223

csdn如何转载别人的文章

csdn如何转载别人的文章
  • stonesing
  • stonesing
  • 2016年08月25日 17:07
  • 2092

ggplot2作图详解3:映射(mapping)

作图前的数据准备工作不仅仅指原始数据的收集,还包括数据外观的整理,这些工作对后续的作图无疑十分重要。和其他作图方法相比,ggplot2的优点之一就是把数据整理融合到了作图过程中,替用户分担了数据整型的...
  • u014801157
  • u014801157
  • 2014年04月23日 16:22
  • 5972

csdn如何转载别人的文章

转载地址:http://blog.csdn.net/jiangping_zhu/article/details/18044109 1、找到要转载的文章,用chrome浏览器打开,右键选择审查元...
  • dlhlSC
  • dlhlSC
  • 2016年08月19日 16:51
  • 5067

洛谷 P1078 文化之旅

搜索+玄学
  • Rlt1296
  • Rlt1296
  • 2016年10月30日 13:39
  • 546

csdn如何转载别人的文章

##转载于:http://blog.csdn.net/jiangping_zhu/article/details/18044109 ##作者:包心菜加糯米饭 1、找到要转载的文章,用chrome浏览...
  • mzpmzk
  • mzpmzk
  • 2016年05月24日 10:56
  • 11884

csdn如何转载别人的文章

对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然...
  • Bleachswh
  • Bleachswh
  • 2016年12月19日 11:08
  • 1513

【SSH】Hibernate:O/R实体映射与一对一关联

实体映射 O/R映射是ORM框架中最为关键的组成部分了。其中的实体映射介绍hibernate中类和表之间的映射属性字段的基本技术   问题:数据库中有一个表【T_User】,其中字段有【ID】、【na...
  • mengdonghui123456
  • mengdonghui123456
  • 2016年05月16日 18:04
  • 1222

如何快速转载CSDN中的博客

前言  对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里...
  • bolu1234
  • bolu1234
  • 2016年07月09日 15:59
  • 12217
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的 O/R Mapping 之旅(一)(转载+补充)
举报原因:
原因补充:

(最多只允许输入30个字)