面向对象的企业开发(5)之 表数据入口

表数据入口:充当数据库表访问入口的对象。一个实例处理表中所有的行。

表数据入口包含了用于访问单个表的所有SQL,如选择、插入、更新、删除等。其他代码调用它的方法来实现所有与数据库的交互。

表数据入口接口很简单,一般包括几个从数据库中获取数据的查找方法以及更新,插入和删除方法。每个方法都将输入参数映射为一个SQL调用并在数据库连接上执行该语句。由于表数据入口只用于数据读写,没有实例化成员变量,所以表数据入口是无状态的。

表数据入口从查询中返回信息,即使是一个根据ID的简单查询也会返回多个数据项。在允许返回多数据项的情况下,可以把这些项作为一个单行使用,但是 Java 只能返回一个单值,多次查询才能返回多行。

解决java返回一个单值的方式:

  1. 第一种不是很好方法是返回某种简单数据结构,如映射 Map。必须将数据从数据库中复制到映射中,这么做并不是最优解,因为这么做破坏了编译时检验,也不是一个显示化接口,这样对映射中的内容拼写错误时会产生错误。
  2. 更好地方法是采用数据传输对象。虽然需要创建另外一个对象,但是该对象可能在其他地方更好用

如果使用的是领域模型,也可以用表数据入口返回适当的领域对象。但缺点是,这样领域模型和表数据入口会产生耦合。

大多数使用表数据入口的时候,对数据库中每一张表使用一个入口。但是对非常简单的情况,可以只用一个表数据入口处理所有表的全部方法。

表数据入口是使用起来最简单的数据库接口模式,能够映射到数据库或记录类型上去。另外,它也为封装对数据源的精确访问逻辑提供了一种自然的方法。

领域模块表模块事务脚本,以上三种领域逻辑模式的数据入口选择问题:

  • 通常表数据入口领域模型很少一起使用,而ORM更适合领域模型,因为可以更好地分离领域模型和数据库之间的耦合。
  • 表数据入口可以同表模块一起很好的使用,表数据入口可以产生一个记录集结构由表模块处理。表模块最适合且仅适合表数据入口。
  • 表数据入口行数据入口,都适用于事务脚本。两者之间的选择归结于如何处理多行数据。例如,如果我们使用表数据入口,返回的多行数据封装成了数据传输对象,此时事务脚本也使用到相同的数据传输对象,这样可以使用表数据入口;如果没有用到数据传输对象,那么行数据入口更方便。

 

转载于:https://my.oschina.net/u/3286366/blog/1573533

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值