序
手写的代码往往会导致代码简单和重复问题,虽然可以通过委托和继承分解出通用行为,但还有更好的方法-元数据方法。例如下列描述把类名和表名对应了起来。
<field name=“customer” targetClass=“Customer”, dbColumn=“custID”, targetTable=“customers” lowerBound=“1” upperBound=“1” setter=“loadCustomer”/>
有了元数据映射方法,有必要构造对内存对象的查询。在开发者不需要知道SQL或关系数据库结构的细节的前提下,可以使用查询对象。
还可以建立一个资源库,能在很大程度上从视图隐藏数据库,任何到数据库的查询都可以做成资源库基础上的查询对象。
概念
在元数据中保持关系-对象映射的详细信息。元数据映射使开发者可以以一种简单的表格形式来定义映射,这些映射由通用代码处理,来实现读取、插入和更新数据的细节。
运行机制
利用元数据信息的途径:
- 代码生成。需要编写代码生成器,即输入是元数据,输出是映射实现类的源代码。XML是流行的选择,一个加载步骤会获得元数据并把它转变成程序语言结构,并最终生成输出。
- 反射编程。在例如setName方法中,根据元数据中定义的域和方法的名字,实现它们的映射。但是这种方法往往速度慢。
使用时机
元数据映射能减少处理数据库映射所需的工作量,但是需要做些准备工作。
元数据映射会影响到软件重构,因为比如某些域的改动会影响到应用程序。
元数据映射能够使重构数据库更容易,因为元数据表示了数据库结构的接口声明,因此,对数据库的修改可以由元数据映射来反映。
使用元数据和反射(java)
注意:下列代码中表、类、列、域都采用的是通用的命名,以便对元数据进行处理
Step1 元数据的保存,保存到两个类里-数据映射(类到表的映射)和列映射(列到域的映射)
Step2 放置这些结构在特定的映射器中(手工编写)
Step3 用ID开始查找。
更新数据库
插入数据库
多对象查询-一次查询出多个对象
方法:把where子句作为参数构造SQL语句