关于 DAO 接口设计的思考

数据库DAO3.6接口被废弃。在DAO不能使用之前,寻找出替代方案 问题 数据库DAO3.6接口被废弃。在DAO不能使用之前,寻找出替代方案。 写作时间 Zilu ZHENG 10/06/2020 摘要 本文详细解释了现有程序使用的数据库和接口。给出了解决这个问题的两大步骤,寻找与CDAO功能类似的库,更换底层的文件系统Access。但是现阶段无法找到与CDAO功能完全一致的库。ODBC接口无法完全覆盖CDAO的功能。ACEDAO接口可以覆盖CDAO,但需要函数方法的使用不一致需要转换,说明文档是VB,使用不方便。 环境描述 程序是C++程序,x86环境(未来不会升级x64 阅读详情
 

需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。

 

设计一:

Java代码

Public interface WindDao {  

    public void create(Wind obj);  

    public void delete(Wind obj);  

    public void update(Wind obj);  

 

    public void other(Wind obj);  

}  

 

Public interface HorseDao {  

    public void create(Horse obj);  

    public void delete(Horse obj);  

    public void update(Horse obj);  

 

    public void other(Horse obj);  

}  

 

Public interface CowDao {  

    public void create(Cow obj);  

    public void delete(Cow obj);  

    public void update(Cow obj);  

 

    public void other(Horse obj);  

} 

 

设计二:

 

Java代码

Public interface BaseDao {  

    public void create(Object obj);  

    public void delete(Object obj);  

    public void update(Object obj);  

}  

Public interface WindDao extends BaseDao {  

    public void other(Wind obj);  

}  

Public interface HorseDao extends BaseDao {  

    public void other(Horse obj);  

}  

Public interface CowDao extends BaseDao {  

    public void other(Horse obj);  

} 

 

疑惑:

采用设计一: 发现增、删、改 这些方法重复了。

采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,

而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。

 

解决方案

 

Java代码

public interface BaseDao<T> {  

    public void create (T t);  

    public void delete (T t);  

    public void update (T t);  

}  

 

public interface WindDao extends BaseDao<Wind> {  

    public void other (Wind wind);  

}

Java中的常用DAO模式实践指南.zip 本文还有配套的精品资源,点击获取 简介:DAO(Data Access Object)模式是一种设计模式,用于分离数据访问逻辑与业务逻辑,优化数据库操作代码的可维护性。本压缩包文件为Java初学者提供了DAO模式的基础实现和相关知识点,包括接口定义、实现类编写、事务管理、异常处理、连接池使用、ORM框架应用、Spring集成以及单元测试方法。学习这些内容有助于开发者掌握如何... 阅读详情

相关推荐

图解“交易·支付·清结算·账务”全局

这个过程大致是这样的,用户先到平台选择喜欢的“餐品”,然后“下单”,生成交易“账单”,用户选择支付方式进行“支付”,支付成功后平台要履行承诺把餐送到,“履约”完成以后平台就开始进行各方利益的“清分”,计算清楚应给谁多少钱,并“记账”,最后将款项“结算”给商家,这个过程如图7所示。交易系统请求订单系统创建订单,因为不清楚平台和商家之间的清结算协议,所以暂且认为所有优惠由平台提供给用户,后续平台再基于协议跟商家之间做优惠的分摊,将上述商品、优惠、计价等信息集成到一起,就得到了完成的订单信息了,如表4所示。

wjianwei666的专栏 1万+

高级 DAO 编程 作者:Sean C. Sullivan

学习编译更好的 DAO 的技巧 级别:高级Sean C. Sullivan (dao-article@seansullivan.com)软件工程师2003年10月J2EE 开发人员使用数据访问对象(Data Access Object DAO)设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑分离。实现 DAO 模式涉及比编写数据访问代码更多的内容。在本文中,Jav

2134

编程语言的未来走向:趋势、挑战与机遇

同时,鼓励他们接触和掌握一些专业领域的开发工具和技术框架,比如Web开发中的JavaScript、React.js,数据分析的Python(Pandas, NumPy, Matplotlib等),以及人工智能和机器学习领域的TensorFlow、PyTorch等。当前,全球范围内正积极推动编程教育的普及化,从儿童启蒙阶段到高等教育阶段,乃至终身学习的过程中,如何优化编程语言的教学方法、提高教学质量,并将其广泛应用于不同领域,是教育者与政策制定者面临的重大课题。未来,编程语言的多样化和包容性将会继续加强。

zrc_xiaoguo的博客 1830

撩课-JavaWeb之DAO方法设计与DAO设计规范

保存方法 解决办法 把所有的信息封装到一个类当中 获取一条数据 传入一个id,从数据库当中获取一个数据 编写DAO组件 1.定义DAO接口 2.编写对应DAO实现类 为什么要定义接口 接口就是只给出了函数声明,但是是没有函数体类。函数体在实现类中给出 面向接口编程 根据客户提出的需求,定义接口,业务具体实现是通过实现类来完成。 当客户提出新的需求,只需...

lkitlike的博客 1146

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 230

扣子工作流实战演练

例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。扣子的工作流节点并不是固定的,而是由一系列可以任意添加的节点组成的,每个节点都有其特定的功能和用途。扣子工作流中常见的节点类型如图4-2所示。在图像生成节点中设置模型为人像,输入参数名为input,变量值引用开始节点的renwu,正向提示词为{{input}},如图4-19所示。然后添加两个节点,选择“图像生成”和“画板”,将“开始”节点、“图像生成”节点、“画板”节点、“结束”节点依次串联,如图4-17所示。

夏天又到了的专栏 1587

JavaBean中DAO设计模式介绍

转自:http://blog.youkuaiyun.com/xiazdong/article/details/6895465/ 一、信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器。 2.显示层:JSP/Servlet,用于给浏览器显示。 3.业务层:对于数据...

hery186的专栏 1019

手把手学计科--web网页设计

网页的组成:文字、图像和超链接等元素。还可以包括哦音频、视频和动画。分类:静态(固定信息)和动态(与服务器数据库进行实时的数据交换。HTML和CSS 是一种静态网页搭建技术。

Yhvaely的博客 1752

一个很优美的操作dao的接口设计方案

通常在业务代码里面会进行dao的操作,dao层会提供正删改查等api,如何减少重复的增删改查,使得代码更简洁 有图为证: 1.首先说明IBaseDAO,这个接口主要是定义一些常用的增删改查方法 package com.bj58.xxzl.hunter.configure.web.dao; import com.bj58.xxzl.hunter.configure.web.dao.e...

qq_26498709的博客 463

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1936

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

关于 DAO 接口设计的思考 (转)

关于 DAO 接口设计的思考 (转)Public interface CowDao { public void create(Cow obj); public void delete(Cow obj); ...

140

基于轻量化网络的干扰信号智能识别算法

针对干扰信号识别时卷积神经网络模型体积大、训练周期长、对硬件存储和计算要求高等问题,本 文提出了一种基于改进轻量级网络模型 SqueezeNet 的干扰信号智能识别算法。该方法首先利用距离多普勒 (Range‑Doppler,RD)处理获得目标及干扰信号的RD图像,接着采用滑窗变换、归一化等技术对RD图像进行重 塑;然后采用基于 RD 信息尺寸的隐层和通道剪枝措施对 SqueezeNet 网络进行改进,缩小了模型尺寸和存储空 间;最后利用不同参数的测试样本拓展网络模型的泛化性能。

qq_43416206的博客 545

问题集锦之关于DAO接口设计的思考

需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。 设计一: 代码 Public interface WindDao {        public void create(Wind obj);        public void delete(Wind obj);        publ...

meixue的专栏 164

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

商城实战项目2:dao层开发(一)

目录 第一步,实体类设计 第二步,dao层接口设计 第三步,编写dao层实现类 第四步,总结 这三天来我们开始练习做项目,分成了很多组,我在我们组中充当项目经理的角色,负责思考项目结构、分配任务等工作。 商城实战项目链接: 商城实战项目2:dao层开发(一):https://blog.youkuaiyun.com/NewReErWen/article/details/102513401 商城...

NewReErWen的博客 583

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

微服务接口设计规范

1 接口评价标准 一个好的接口设计通常需要满足以下几点: 简单:满足需求的同时,越简单越好。 易懂:优秀的API可读性好,尽量做到不需要文档就能读懂接口名称、参数的大概含义,提供给第三方的的接口要进行详细地描述。包括参数的取值范围、错误码、异常返回规则、SLA相关指标等。 一致:对于同一公司、站点提供的API,最好有同一的规则,让开发者只要看过几个API后,基本能猜到剩余API的含义。 稳定:最好在开始的时候就考虑好,不要轻易修改API,否则会给使用方造成麻烦。 安全:设计时要考虑超出预

数智技术 4556

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

对《关于Dao层职责的思考》一文的修正

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33858249的博客 134

写了一个小工程——技术思考

技术思考这是我做完那个小工程的第二篇总结。这一篇中,我想记录一下编写过程中的思考和技术问题。关于接口的使用在那个小工程中,有这样一个场景:有操作员和普通user两类用户,他们都有权利对一个数据库一个实体类进行访问,但是访问的权限并不同,即能做的事情不同。对于此,首先,编写两个不同的Dao层接口是一定的,但是,这两个接口怎么实现呢?我取了一个巧:令一个实现类同时扩展这两个Dao接口,把关于实体类数据访

lqadam的博客 607

【OA】Dao层“接口”、“实现”两个维度一个良好的设计学习

在学习OA系统的时候,鉴于已经搭建起来的SSH框架,首先要做的就是从底层开始做起,结合所做的项目更多的是在前人基础上修改,这次学习如何设计Dao也是让我大开眼界,总结成博客,便于以后再回头学习。     一、包设计     项目名称:ItcastOA     资源文件夹:src、config、test              由于“src”用于存放主代码,对DAO的接口、实现就该

暂七师师长常乃超 1448

云上社群系统部分接口设计详解与测试

本系统实现了基于 Spring 的前后端分离版本的社群系统, 后端主要采用了SSM架构,前端采用ajax和后端进行交互,采用MySQL 数据库,实现了用户登录注册、个人信息和帖子的查看、发布帖子、帖子回复、站内信等功能。

qq_53332052的博客 1455

后端开发三年,我总结出五个接口设计经验

回到最开始那个凌晨。如果那个接口在设计之初就做到了这五件事,那次事故根本不会发生。三年过去,我逐渐意识到,接口设计其实是一场“反人性”的修炼:它教的不是怎么把代码写得更炫,而是怎么让代码变得无趣、稳定、可预期。好的接口看起来平平无奇,但它在暴雨天不会漏水,在潮水般涌来的请求前不会崩塌。现在我每写完一个接口,都会问自己两个问题:如果两年后的我接手这个接口,他会觉得它清晰、聪明、敢想敢做,还是觉得它像一个没盖好的筒子楼,里面堆满了意图不明的胶带?

2501_90410679的博客 10

service和dao层是否一定需要实现接口呢?

大多数项目中的架构都如下图所示 其中facade和manager层可以根据业务需要选择是否保留 通常在项目中我们会选择对facade和service做先写接口,再做实现的处理,但是在实际开发中,好像并没有体现出先写接口的必要性,写篇文章,总结一些接口的好处,以及分析在实际开发中是否一定要接口化处理 接口的好处 可以开发人员明确改类实现的功能 在多实现的场景下,对实现类起规范作用 在多人协作开发的场景下可以快速提供还未实现的方法 java动态代理是基于接口去增强的 思考 实际工程开发中,功能从设计到实

珈凝的博客 1655
上一篇: 用axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务
下一篇: 泛型写基础DAO
janejava
博客等级 码龄19年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值