zoukankan      html  css  js  c++  java
  • 一种通用的数据访问对象模式

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/50178231

    作者:苏生米沿


    DAO模式起源于sun的java蓝皮书,已经有15个年头了。一个DAO类定义了一个接口,用于操作与特定实体相关的持久化操作,它建议你将跟这个实体相关的代码都聚合在一起。考虑到时间之久,现在已经出现了多种多样的DAO模式,我们推荐一种模式如下:


    我们将持久化层分为两个平行集成层次,一边是接口,一边是实现。基本的实例存储和检索操作都被包装在一个超接口和实现这些操作的超类中,它们都带有一个特定的持久化解决方案。一般的接口可以通过扩展实现自己的特殊的业务实体要求,同样的,你可以实现一个或多个DAO接口。


    ​我们快速的看下这个结构。它囊括了一堆的查找方法,典型的,这些方法都会返回被持久化管理的实体实例,他们也可以是任意的数据传输对象,如ItemBidSummary.。查找方法是你代码复用的一个最大问题,如果你不小心翼翼的规划,你可能会已杂乱的几十个结束。第一步就是让它们尽可能的通用,让它们在集成的高层次,理想情况是接口的顶层。看一下ItemDAO中的findByName()方法,你很可能在后期会增加更多的方法,或者你会想数据在数据库中返回时是有顺序的,或者你将会实现一些类似分页的操作。


    DAO api提供的方法明显的表明,这是一个状态管理的持久化层次。像makePersistent()和akeTransient()方法改变实体的状态。


    我们这里说的持久化层并没有将JPA或者其它实现接口暴漏出来,所以你可以在任意的更换实现,对客户端是没有影响的,理论上来说。


    如果你想客户端也要访问原生的方法,那么就需要你暴漏出来了,那就是另一个设计方法了。


    微信访问地址:http://mp.weixin.qq.com/s?__biz=MzA3MTU1NjM4MQ==&mid=400752253&idx=1&sn=8ee3b70dd2d8f33963888abfd487dbd9#rd


  • 相关阅读:
    用vuex写了一个购物车H5页面的示例代码
    css如何引入外部字体?
    移动开发中更好的图片自适应
    常见样式问题七、word-break、word-wrap、white-space区别
    你真的了解word-wrap和word-break的区别吗?
    css中word-break、word-wrap和white-space的区别
    另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
    应该用forEach改变数组的值吗? 原生JS forEach()和map()遍历的异同点
    Vue 全家桶介绍
    Spring MVC配置MyBatis输出SQL
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152459.html
Copyright © 2011-2022 走看看