3.3.1 XML格式的元数据

任何ORM的解决方案都应该提供一种易读的、容易编辑的映射文件格式,而不仅仅提供一个GUI图形工具。当下流行的对象/关系元数据格式都支持XML。使用XML格式的文件可以提供如下好处:首先它是轻量级的,提供很好的易读性,能够进行版本控制,可以在部署阶段定制。

但是XML格式文件真的是最好的选择吗?Java社团中就反对XML文件中使用了过多的反斜线。每个框架和服务器都需要使用其特定的XML描述符。

在我们看来,使用反斜线有三个主要的原因:

许多现存的元数据可读性和可编辑性都很差,究其原因就是缺乏对于属性元素默认值的支持。

元数据为基础的解决方案经常被滥用。元数据并不比Java代码更容易维护,过多的元数据会造成混乱。

一般的XML编辑器,尤其是那些IDE提供的,其编辑的质量远远比不上对于Java代码的支持。更糟糕的是,很多情况下这样的XML并不提供DTD,这样就无法进行验证。另外一个问题就是DTD的定义太通用了,以至于不会起到实际的作用。

然而,并不能就这样忽略ORM对于基于文本的元数据的使用需求。Hibernate就充分到了元数据的这些问题。其定义的元数据提供了很好的可读性以及默认值。当没有配置属性值的时候,Hibernate会利用反射机制找到类来完成默认值的配置。Hibernate还提供了完成的DTD。最新的IDE都已经更好的支持XML文件的编辑,包括动态的校验甚至包括自动完成配置的功能。如果这些仍然无法满足你的要求,那么我们将在第九章介绍一些工具来生成Hibernate映射文件。

让我们来看一下Hibernate中的映射文件。我们之前创建了Category类,现在需要把它映射到CATEGORY表中。为了完成这个配置,我们使用了列表3.4中的映射文件。

(1)每个Hibernate映射文件都应该声明DTD,它用来验证XML的语法是否正确。

(2)所有映射配置都放在<hibernate-mapping>元素之间,你可以随意配置的类,至于其他的配置我们将在后面说明。

(3)类category映射到CATEGORY表。表中的每一行都代表了Category的一个实例。

(4)至今为止我们并没有讨论对象标识的概念,所以你可能会对这种映射方式感到奇怪。这个主题将在3.4中讨论。为了理解这个问题,你必须知道CATEGORY表中的每一条记录都会有一个主键来对应内存中的对象的实例。<id>属性就是用来定义对象标识的。

(5)属性type映射到数据库的name列。需要注意的是type使用的是Hibernate内置的String类型,而不是java的类型或者数据库的类型。你可以把它理解为映射类型。这些都将在第六章的6.1中讨论。

我们有意的在这里不提到关于关联的映射。关联的映射更加复杂,将在3.7节中进行讨论。

尽管在同一份映射文件中可以声明多个映射类,但是实践经验告诉我们最好每一个类对应一个单独的映射文件。而文件的命令和类保持一致,例如在本例中可以把文件保存为Category.hbm.xml。

让我们来讨论Hibernate中基本的类和属性的映射。但是请记住,稍后我们还会回来讨论持久类之间的关联映射的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值