自治应用程序的体系结构
2007-02-23 12:21:12 来源:WEB开发网核心提示: 使用自定义实体类让我们看一看如果开发人员不想向客户端公开数据库的结构,应该如何设计对象,自治应用程序的体系结构(8),他们可以选择按照一种常用的设计模式来设计代表所谓“域模型”的有状态对象,当然,也很显然,与数据库进行四次往返交互比一次往返需要更多时间,域模型代表的
使用自定义实体类
让我们看一看如果开发人员不想向客户端公开数据库的结构,应该如何设计对象。他们可以选择按照一种常用的设计模式来设计代表所谓“域模型”的有状态对象。当然,域模型代表的是真实域的对象。在我们的比赛应用程序中,域模型可以包含诸如马、驯马师、赛马骑师和比赛等类。
另外,域数据的实际数据源也可以是数据库。这是大多数结构化数据存储的地方。显而易见,数据库模型近似代表域,因此它是个域模型。
这就是为什么在应用程序中主要由自定义实体类组成的实体类集与数据库中表示相同域的表集如此符合的原因。这也是为什么许多开发人员低估与类模型相反的实际数据模型的值的原因。
理想情况下,类域模型与相关域模型之间的一致性不应该如此接近;数据库应该适当标准化。以同样方式标准化内存内的实体类通常会生成大量实际上不需要的代码。这也会导致增加代码复杂性和减慢操作速度。
将实体对象映射到数据库
为什么内存内的实体类趋向于像数据库表那样标准化呢?这主要是因为经常用于相互映射内存内的对象和相关表的策略造成的。由于很少产生异常,建议采用基于内存的域模型的作者也会建议在基于内存的类和数据库表之间进行近似一一映射。
图 4 提供了在这样的情况下客户端所面对问题的简化实例。除了键和集合类,它几乎就是数据库表的复制品。不言而喻,它采用多个 SQL SELECT 语句来填充这四个实体对象。也很显然,与数据库进行四次往返交互比一次往返需要更多时间。而其好处仅仅是使客户端较少依赖于数据库。
图 4 映射结果
更多精彩
赞助商链接