工厂模式之DAO

DAO设计模式+工厂模式(Factory) 帮同学写了一个JavaSE的小程序。通过这个小程序。练习了DAO设计模式+工厂模式的写法。还算有收获。 DAO设计模式在JavaSE中就是将数据操作和界面分开来写。这样便于后台数据库操作维护。也就是在界面类中不能出现sql包(java.sql.*;)。DAO设计模式也便于编写界面和数据库操作的人员同步开发。提高效率。             首先写出一个DA 阅读详情
  
在平时应用中,跟数据库打交道是很必然的,很多应用开发中都要对数据库进行操作,例如查询、更新、插入、删除等等,但在应用中我们如何做到提供一个非常好的接口,以便之后的维护呢?其实有很多种做法,现在我简单介绍一下得用DAO来对数据库的常用操作进行处理。
ManagerDAO,EngineerDAO,WorkerDAO extends UserDAO
由UserDAOFactory生产ManagerDAO,EngineerDAO,WorkerDAO
而UserDAOFactory又继承自DAOFactory
/*
*功能:此类利用配置文件来配置数据库的驱动以及用户名、密码等,
*使其功能更加完善,便于以后复用,可用于任何数据库的连接
*/
public Class DAOFactory
{
         private string configPath = ””;//配置文件的路径
         public Connection getConnection()
         {
                   读取配置文件,生成一个Connection;
         }
}
/*
*功能:此类继承自DAOFactory,然后可生成各应用中的DAO,使维护更加方便,
*若在之后的开发中,想更换数据库,则不用修改这个文件,只修改配置文件就OK了
*/
public class UserDAOFactory extends DAOFactory{
         public ManagerDAO getManagerDAO(){
                   ManagerDAO mdao = new ManagerDAO();
                   Connection conn = getConnection();
                   mdao.setConnection(conn);
}
 
public EngineerDAO getEngineerDAO(){
         EngineerDAO edao = new EngineerDAO();
         Connection conn = getConnection();
         edao.setConnection(conn);
}
 
public WorkerDAO get WorkerDAO (){
         WorkerDAO wdao = new WorkerDAO ();
         Connection conn = getConnection();
         wdao.setConnection(conn);
}
 
}
 
/*
*功能:为同一模块中的应用提取公共属性及方法,只提供数据常用操作的方法接口,
*同子类具体根据不同情况实现其功能
*/
 
Public class UserDAO{
         protected Connection conn;
         public void setConnection(Connection conn) {
                   db.setConn(conn);
                   this.conn = conn;
         }
         public void close(){
                   if (conn != null) {
                            try {
                                     conn.close();
                                     conn = null;
                            } catch (SQLException e) {
                                     e.printStackTrace();
                            }
                   }
         }
         public abstract User add(User user);
         public abstract User updateById(String userId);
         public abstract User queryById(String userId);
         public abstract Connection queryAllRecords();
         public abstract deleteById(String userId);
}
/*
*功能:此类继承自UserDAO,实现父类定义的抽象方法
*/
 
public class ManagerDAO extends UserDAO{
         public User add(User user){
                  在这里进行插入数据库表的操作
}
public User updateById(String userId){
         根据userId更新数据库表
}
public User queryById(String userId){
         根据userId搜索数据库表
}
public Collection queryAllRecords(){
         查询数据库表中的所有记录
}
public Boolean deleteById(String userId){
         根据userId删除数据库表记录
}
……
还有根据具体的需求写一些具体的操作方法
}
public class EngineerDAO extends UserDAO{
         public User add(User user){
                   在这里进行插入数据库表的操作
}
public User updateById(String userId){
         根据userId更新数据库表
}
public User queryById(String userId){
         根据userId搜索数据库表
}
public Collection queryAllRecords(){
         查询数据库表中的所有记录
}
public Boolean deleteById(String userId){
         根据userId删除数据库表记录
}
……
还有根据具体的需求写一些具体的操作方法
 
}
 
public class WorkerDAO extends UserDAO{
         public User add(User user){
                   在这里进行插入数据库表的操作
}
public User updateById(String userId){
         根据userId更新数据库表
}
public User queryById(String userId){
         根据userId搜索数据库表
}
public Collection queryAllRecords(){
         查询数据库表中的所有记录
}
public Boolean deleteById(String userId){
         根据userId删除数据库表记录
}
……
还有根据具体的需求写一些具体的操作方法
 
}
在这个模块中应还有如下几个类:User,Worker,Engineer,Manager,其中Worker,Engineer,Manager 继承自User,在User中定义那三个类的公共部分。
在本文中只简单的介绍了用户模块的简单设计,结合各自应用可以按照这种设计方式设计其他各个模块。其中应用中的各个模块的工厂DAO都继承自DAOFactory,这样所有数据库的配置都只受配置文件影响,若在应用中想更换数据库,则只需更换配置文件,不需要再修改程序,很好的利用了面向对象的思想。
DAO层与Service业务逻辑层的解耦实现之Factory工厂模式 为什么在MVC的三层开发架构中会非常推崇接口编程,那么根据已有的解释,接口编程的好处是:可以帮助层与层之间的解耦,让每个部分独立出来,互不影响,更加的利于团队开发合作和提高复用性与扩展性。那么,在数据访问层(DAO)和业务层(SERVICE)之间的解耦是如何做到的呢? 阅读详情

相关推荐

探索工厂模式与DAO模式在软件开发中的应用

在软件开发领域,工厂模式和DAO模式是设计模式中的重要组成部分,它们为实现高质量的代码提供了有力的保障。工厂模式,作为一种创建型设计模式,通过封装对象的创建过程,使我们能够根据输入灵活地创建不同的对象,从而在程序中实现低耦合与高内聚。而DAO模式,即数据访问对象模式,是数据持久化操作中的关键架构模式,它抽象了对数据源的操作,将业务逻辑与数据访问进行分离。本章将对工厂模式与DAO模式进行初步介绍,并揭示它们在软件设计中不可或缺的角色,为进一步深入探讨这两种模式奠定基础。

weixin_35006125的博客 648

应用HSQLDB进行数据访问层测试

在测试数据访问层的DAO代码时,如果连接真实的数据库会导致产生一些测试数据。应用HSQLDB在内存中建立一个同结构的数据库用来测试是个好主意。下面就针对使用Ibatis的DAO代码进行测试。 1. 下载HSQLDB 的jar文件。 2. 建立一个数据库描述文件 java 代码 driver=org.hsqldb.jdbcDriver   url=jdbc:hsqldb:mem...

随便写点 179

工厂模式dao模式操作数据库小例子

工厂模式dao模式操作数据库小例子 本例子适合刚学完java一点基础部分,想利用下工厂模式还有dao设计模式简单操作数据库的看一下

DAO工厂设计模式

解释 DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。 目的 为了建立一个健壮的Java应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的 语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储 DAO模式是标准的JavaEE设计模式之一.开发人员使用

weixin_45583648的博客 373

Quartz定时任务调度框架中的Misfire策略实战解析

本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。

weixin_29250573的博客 78

23.网工入门篇--------介绍一下园区网典型组网架构及案例实践

园区网典型组网架构主要分为小型、中型、大型三种类型,以下是详细介绍及相关案例实践:

qq_31450765的博客 966

17.DAO模式讲解及TaskDAO开发

本文主要介绍DAO模式、domain概念以及代码实现任务管理DAO接口和实现类。

Erik_ly的博客 2143

A B C三个气象站的小波分析结果解读

在小波分析的过程中,信号的不同频率分量会在不同的尺度上显现,而纵轴上的数值表示信号在相应尺度上的强度或能量。2. **小波方差的横轴(水平轴)**:横轴上的尺度表示用于分析的小波函数的尺度。1. **共同趋势:** 在所有三个点的小波方差图中,随着尺度的增加,方差逐渐增大,尤其是在较大的时间尺度上。3. **尺度30的特殊性:** 在所有点的小波方差图中,尺度30似乎是一个特殊的点,对应着一个较长的时间尺度上的波动或变化。2. **方差的大小:** 方差的大小反映了在相应尺度下信号的波动强度。

weixin_44259522的博客 861

java工厂模式dao_将数据库操作封装到DAO和一些关于工厂模式的学习

大概是进行毕业设计项目以来连续写代码时间最长的一天,因为每一步都是对上一步的优化,逐渐达到最终的目标,新的代码其实也不多,主要还是理解了一点这么做的好处。大致过程是:将数据库操作封装到DAO → 利用工厂模式创建DAO,避免客户端直接依赖于具体的实现类 → 使用抽象工厂设计模式,并编写配置文件应对可能发生的变化 → 定义getBean方法,并预先初始化DAO和工厂对象,避免创建多个DAO和工厂 →...

weixin_29323977的博客 300

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8157

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应 一般情况下,我们都是在 dialog 里面 放一个 list 控件,然后 用自己的类绑定自己的自绘对象,如同下面: 1.  在 dialog 里面 加一个 list 列表 2. 然后 绑定这个列表 哈哈...

mfreesky的专栏 2171

Dao工厂模式

Dao工厂 在总结Dao工厂模式之前,先来了解一下Dao模式 Dao模式 作用:降低 业务操作 和 表操作的基础类的耦合性 Dao模式:主要有三个角色 1.Dao接口:提出规范 规范所有的基础操作函数名称 2.Dao实现类:实现Dao接口,实现具体函数操作 3.Dao工厂:工厂模式 负责创建实现类对象 下面是 Dao工厂模式的实现方式 1.先将允许被工厂获取的类通过 key-value的方式 写到.properties文件中 2.在工厂类中 获取配置文件信息 3.通过 反射生成该类名字符串的 实例对象

weixin_39574108的博客 463

Python之aaindex包语法、参数和实际应用案例

`aaindex`是一个专为生物信息学设计的Python包,主要用于处理氨基酸指数(AAindex)数据库。该数据库收集了各种氨基酸的物理化学性质和统计特性,涵盖疏水性、电荷、体积等500多种特性。`aaindex`包提供了便捷的接口,让用户能够快速访问这些数据,并应用于蛋白质序列分析、结构预测、功能推断等领域。

王国平的博客 1037

浅谈java中dao工厂设计模式

      来源:http://www.114java.com/javajichu/201007/2389.html     在JAVA开发中,随 着软件分层设计的流行及广泛的应用,对于DAO设 计模式大家已经不再陌生了,DAO层 已经在软件系统的开发中成为必不可少的一层,将后台的数据层和前台的VO进行分离。前段时间也针对于DAO设计模式介 绍过一个基于Hibernate的" 泛型DAO的设计 "。       通过DAO的 设计的确可以让我们的软件系统已经将数据层和表现层进行了简单的分离,让

heqiyu34的专栏 5847

Android AVB 分析(十三)dm-verity 设备是如何映射的?

在上一篇《Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介》介绍 dm-verity 原理的时候,作者提供了一个 dm-verity 演示的例子。本篇我们基于 AOSP 源码 `android-13.0.0_r41` 实际编译生成的 Google Pixel 7 (“panther”) 设备的 system 分区镜像进行 dm-verity 设备验证实战。

洛奇看世界 2440

事件驱动的 SAP 工作流:从 BOR 事件到 Event Linkage 的落地与排障全景图

摘要: SAP工作流中的Event是业务对象状态变化的系统广播机制,如发票录入、采购订单释放等事件。通过事件驱动,业务程序与流程引擎解耦,业务只需发布事件,流程引擎负责后续处理。文章详细解析了SAP工作流事件的完整链路,包括事件定义、触发机制、事件容器传递、SWE2配置的关键作用,以及事件不触发时的排查方法。重点介绍了事件在启动流程、终止任务、等待步骤和主动创建中的应用,并结合采购订单审批案例说明事件的实际使用场景和配置要点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 190

Dao模式及Dao工厂模式

DAO模式介绍 DAO是Data Access Object(数据访问对象)的简称。 首先,你的应用程序肯定会有业务逻辑的代码。在三层架构的web系统中,业务逻辑的代码,就是在你的Service组件里面;在我们的spark作业中,业务逻辑代码就是在我们的spark作业里面。 如果说,不用DAO模式的话,那么所有的数据库访问的代码和逻辑会全部耦合在业务逻辑代码里面。比如,你的业务逻辑代码中,可能会充斥着JDBCHelper,定义SQL语句,处理查询返回结果等等代码。会导致业务逻辑和数据访问严重耦合。导致以后如

qq_43203494的博客 615

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java工厂模式dao_java – 什么是DAO工厂模式?

我知道工厂和抽象的工厂方法,但是我想用Java创建一个DAO工厂模式。>我想知道它的重要性。>它的用法我检查了this link,但我很难理解。任何人都可以用一个例子的帮助来解释它吗?编辑:这是一个DAO模式的例子,据我所知:public interface UserDAO {public void insert(User user);public void update(User u...

weixin_30477489的博客 180

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

工厂模式与DAO模式

工厂模式与DAO模式 博客分类:  设计模式 DAO设计模式AppleF#UML       工厂模式是设计模式中较简单的模式,但在项目的开发过程中会常常用到它。下面分析下工厂模式,提出一种在项目中比较可行的工厂方法的实现。同时,结合单例模式,构建DAO设计模式。 工厂模式 1、工厂模式的组成 简单工厂模式又叫静态工厂模式,顾名思义,它是用来实...

rongdmmap的博客 193

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java工厂模式dao_DAO模式+工厂模式+单例模式

数据库加载连接类import org.apache.log4j.Logger;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Prop...

weixin_35744849的博客 205

浅谈DAO工厂模式

 浅谈DAO工厂设计模式      随着软件分层设计的流行及广泛的应用,对于DAO的设计模式大家已经不再陌生了,DAO层已经在软件系统的开发中成为必不可少的一层,将后台的数据层和前台的VO进行分离。前段时间也针对于DAO的设计介绍过一个基于Hibernate的泛型DAO的设计。csdn blog:http://blog.youkuaiyun.com/yongtree/archive/2008/03

4455

Java 工厂模式——Dao工厂

文章目录工厂模式介绍BaseDao介绍实现(案例代码)项目目录 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,...

innovation的博客 1417

DAO三层架构及工厂模式

目录结构 1.在domain包中创建User实体类 package com.rick.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; private float money; public int getI...

Rick的博客 6208
上一篇: Eclipse常用快捷键总结
下一篇: 逆向思维撰写SQL语句
tomison
博客等级 码龄21年 10粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值