表单对象、值对象、及持久化对象浅谈

我们在做Web开发的时候经常会涉及到从表单提取数值,保存到数据库的操作。这个操作最直接的做法就是直接从表单读取数据,直接存储。做过OO设计的都知道这样不利用日后维护,而且在代码重用上也没什么建树,代码量大,在性能上也难以提高。
通常我们会采取建立表单对象(Form Object),值对象(ValueObject)和持久化对象(Persistence Object)的做法,将页面值存储在FO中,通过VO将FO中想要保存到数据库中的格式化数据传到PO中,最后通过持久化工具将PO存储。简单来说就是一个如下的过程:
[quote]FO——(格式化)——VO——(提取,组装)——PO——DB[/quote]
因为通常页面上的数据是不能直接存储的,所以,需要一个格式化的过程,将页面的数据转化成数据库中对应的数据类型,这个过程涉及类型转换,字符串拼接,字段定义(特殊字段特殊含义)等等。由于数据库范式的要求,从页面上来的数据可能同时对应着多张表,比如:一个Person信息FO同时包含了Person信息的PO,关联信息Relationships,Address等PO;有的时候直接便是以主子表的形式出现。这种情况下我们便需要对FO进行重组,以生成对应数据库表的PO然后才能存储。

存储的时候按照上面的过程便可以得到比较好的解决,但在页面展示的时候,如果按照上面的反过程,那么我们首先面临的便是经常性的多次查询和表连接,因为我们在做PO对象组装时每个PO对象便意味着一次查询。
在页面展示的时候,我比较倾向于创建视图和函数,实现查询过程化。一方面提高的数据查询的效率,一方面简化了DB层的代码,还有利于系统和数据库的维护。
在创建视图和函数时候,我们可以针对日常使用比较频繁,对数据库消耗比较大,如表连接,多次查询,子查询等情况。在创建函数和视图时尽量提高其综合利用度,这有利于降低数据库开销,和维护难度。但提高综合利用度不应当以过分的牺牲性能为前提。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值