页面与DAO

[color=blue]首先,老帖子了,记得前几个月突然心血来朝发的,都是我个人的一些经验之谈,目前就是为了让我们的程序结构更清晰一些,能更加减少我们的工作量。 :) 没想到还有朋友能够过来关心一下,十分感动。谢谢你们。 :oops: 后面有些我今天的补充,大家随便看看,有什么好的建议提一提,交流交流。 :D [/color]

看见论坛上有人对页面是否100%对于DAO有比较大的分歧。

从目前的开发模式来看,更多的是根据需求建立表。之后对表进行操作。撇开领域模型不谈。DAO层的操作在许多项目中的确是对应着页面。页面有什么需求,我就写什么样的DAO。这样其实也并非不是一个开发的方法,但是,问题出现了。许多项目中有许多相同的DAO操作,比如:登陆,注册。当然,它们之间也许有区别。有些系统要求登陆的时候记录一下它的登陆时间和登陆地址。而有些系统则要求登陆时只要记录一下它的登陆IP就可以了。问题出现了,怎么样我们去复用这个DAO呢?当然,我们不会傻到把这些功能都写到DAO中,我们把DAO需要的操作只留在DAO中,比如:FindUserByLoginName(String loginName)。OK,把之后一些需要判断,等等放到另外的分层中。这样一来,这个DAO可以被复用了。此时,这个DAO也和页面对应了。似乎这样开发也不错。别的项目中需要这个DAO。我就COPY一下,就OK了。但是,COPY不代表复用。
复用(继承与组合)。我们可以把这些DAO封装在一个Package中。当然,你也可以不用这么做。但是,为什么会有人看不习惯页面与DAO完全一样呢?我想还是因为复用这个问题吧。100%的页面对应着DAO,也就说明DAO是根据项目需求写的。没有从别的Package中引入,只是COPY。这样一来,在许多项目中写着许多重复的DAO。
当然,也有许多复用DAO的。把DAO层直接写为泛型。在把这些泛型DAO封装到一个Package中,之后在另外一个项目中直接引入,当成自己的架包使用。但是,这并没有完全100%的复用。因为你还得去做一些事情,比如:写配置,假如你使用了SPIRNG,MVC,ORM这些框架,你还是逃不了配置。虽然你的代码可以复用。这算不上是100%的复用。但是,代码确实被复用了。你不用COPY,你只要IMPORT,NEW。

这很矛盾。页面100%对应DAO。页面不对应DAO。太多的争论!
我想解决这种矛盾一定有更好的方法,完全可以利用我们目前的技术来解决这些矛盾。大家有什么好方法?


[color=blue][size=medium]以上这些内容是在2个月前(一个月前?忘记了)写的。下面是今天补充的![/size]
[/color]

-------------------------------------------------------------------------------------------------


[color=red][size=medium]后记:目前有些比较好的解决方法,这些应该是大家常用的。[/size][/color]

1.把一些通用方法些成独立的类。(之后对其引用或者继承)
2.进行更高成次的封装。(有些直接打包成JAR)
3.进行模型化,类似于充血模型的那种方法。
4.带网友补充!


[color=red][size=medium]这些方法都很常用,也很老套,似乎现在没有更好的方法。[/size][/color]

1。继承的问题:关系太复杂,但是可以提高速度,复用性强。

2。引用的问题:现在使用IOC,问题不太大,但是如果程序结构不好,问题还是挺多的,而且一个类里到处去引用N个类,结构很混乱,但是有些时候我们不得不这样做。

3。使用AOP:老生常谈,问题就是AOP复杂,项目中使用会带来学习曲线,成本问题。而且维护的人对AOP不一定熟悉,虽然是非侵入式,这种侵入式我认为是非技术上的侵入,但是对人的侵入比较大,不过像事物处理,日志记录等等使用到是能带来良好的代码可读性。选择AOP需要在技术和人员上做出均衡的选择。

4。各种框架的拦截器泛滥问题:这个问题在SPRING与STRUTS2的组合中由为严重。SPRING中有AOP,STRUTS2中有拦截器,导致本身应该属于业务层的逻辑验证跑到了展现层中,导致代码难被复用(强大的封装),测试困难。


[color=red][size=medium]再次关于DAO与页面:[/size][/color]

在回到DAO与页面,我认为如果Domain只是单纯的GET/SET,但是DAO与页面操作对应应该非常的好,程序结构完全的非OO,用的很爽,开发速度也很快,我就这么干过,一个功能,一个功能的写,类只是个空架子,模块与模块之间没有任何的继承关系,只是引用。小行项目很适合,而且连设计都不需要,本身功能很独立,有的时候连面向接口编程都省了。相比之下,还是要根据项目的大小,实施情况,人员水平来综合考虑。


[size=large][color=red]个位网友的个人经验之谈:[/color]
[/size]
[quote="xuzhfa123"] 各有各的好处:
第一种:DAO对应页面,也可以说一个表对应一个DAO
一般大项目时,DAO对页面,这样有利于分工,各自的开发工作独立开来.但是缺点也少,需求变化,相应的DAO跟着改,其次就是那一堆的配置文件也得做相应的改动.最糟糕的是,后期维护困难,这样项目成本也增加。
第二种:泛型DAO结合目前流行的注解
不管是大项目还是小项目都适合,因为共用一个DAO,需求变化时可以做出快速变动(用了注解,至少我hbm文件不用维护了,维护实体类就行啦),其中对DAO没有影响。在可扩展方面也好,可以继承这个DAO进行扩展。后期维护起来当然也减少工作量,降低项目成本。

相比较一下,第二种除了拥有第一种的优点之外,在其他方面也优于第一种。[/quote]
详解Nacos集群搭建 在我们日常的开发当中,用的都是单点Nacos,这种模式,我们自己开发测试玩一玩还可以,但是到了企业的生产环境之下,你还这么玩的话,那肯定是要出大问题了。因为在企业当中,我们更加强调的是高可用,所以在企业的生产环境下,Nacos一定要做成个集群。 阅读详情

相关推荐

吐血总结《Mysql从入门到入魔》,图文并茂

文章目录1. 查询1.1 查询多列1.2 检索唯一值1.3 限制输出1.4 注释2. ORDER BY 排序2.1 单列排序3.2 多列排序3.3 指定排序方向4. WHERE 过滤数据4.1 WHERE 子句操作符4.2 范围值检查4.3 空值检查5. 高级数据过滤5.1 WHERE 组合过滤5.2 IN 操作符5.3 NOT 操作符6. 通配符过滤6.1 % 通配符6.2 _ 通配符7. 创建计算字段7.1 计算字段7.2 拼接字段7.3 执行算数计算8. 函数8.1 常用文本处理函数8.2 日期和时间

向日葵的专属太阳 3万+

DAO的简单理解

DAO的简单理解 DAO 设计模式 客户层:客户使用浏览器进行访问 显示层:使用servlet和jsp进行页面的显示 业务层(business object):将多个原子性的DAO操作进行组合 数据层(DAO):提供DAO的原子性操作 DAO组成 数据库连接: vo(value object):定义涉及的变量的getter和setter,后期提取相关的值时操作vo对象。一个vo对象类似于一条...

xuexilangren1的博客 3359

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1874

S2SH中,JSP页面调用dao的方法

S2SH项目中,在spring中 我们知道请求是从action进入,如果在JSP页面直接调用dao的方法会报空指针 异常 找了半天,终于找到了解决办法。 第一步:在JSP页面导入   第二步:找到spring的bean <% ApplicationContext ctx =WebApplicationContextUtils.getWebApplicationContext

mingming_vip的专栏 3426

NeRF必读:Mip-NeRF总结与公式推导

由于远景近景的分辨率不同,导致经典NeRF对于多尺度场景的表达存在明显瑕疵:NeRF对于近景的重建比较模糊而对于远景的重建出现锯齿。简单粗暴的策略是supersampling,但是费时费力。相较于NeRF使用的位置编码(PE)方式,Mip-NeRF提出了积分位置编码的方式(IPE).这种编码方式可以多尺度地描述空间中的信息分布,make sense.

i_head_no_back的博客 6079

告别‘火龙’:实测BES2800/RK2108等主流芯片,聊聊AI眼镜的功耗与散热‘内卷’实战

本文深入探讨了AI智能眼镜在功耗与散热方面的挑战,重点分析了恒玄BES2800和瑞芯微RK2108等主控芯片的能效表现。通过实测数据和优化策略,揭示了在6nm工艺、异构计算和系统级散热方案下的实战经验,为AI眼镜的功耗管理提供了实用解决方案。

weixin_30839881的博客 946

springboot(二)web页面、dao层代码准备

1、准备html模板 404页面、dashboard主页、index登录页面、list表单页面 asserts文件夹里面是css、js、img这些静态资源 2、静态资源放进项目 404页面、dashboard主页、index登录页面、list表单页面放到resources/templates文件夹下,asserts文件夹放到resources/static文件夹下。 3、pojo创建 在com.cjc.myspringboot包下创建pojo包,再创建Department.java、Employee.j

linpulao的博客 696

2024年上半年试题二:论性能测试方法及其应用

2025年1月,我以系统分析师的身份参与了公司OA系统的开发与建设。该系统包含的功能有打卡签到、公文流转、工资查询等。我们吸取了之前由于系统使用人数激增暴露出的短时间卡顿等问题,所以在本次开发中,我们非常重视系统的性能测试。通过自动化的测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样,常见的负载测试和压力测试都属于性能测试。

银帅 548

大数据——Dao模式、单例模式和前端页面连接数据库实现登录功能

Dao模式、单例模式和前端页面连接数据库Dao封装JDBC实现JDBC封装什么是DaoDao模式的组成部分配置数据库访问参数属性文件 Dao 封装JDBC 上篇博客中说到使用JDBC连接数据库,其中存在几个弊端。 业务代码和数据访问代码耦合: (1)可读性差 (2)不利于后期修改和维护 (3)不利于代码复用 解决办法: (1)将相似功能的代码抽取封装成方法,减少代码冗余 (2)因为不同的数据库会有不同的实现,对数据库的操作一般抽取成接口,在以后的开发中可以降低耦合 隔离业务逻辑代码和数据访问代码。 隔离不同

蜂蜜柚子加苦茶 1754

【AI智能体】Coze 搭建个人旅游规划助手实战详解

Coze 制作旅游规划助手机器人实战详解

congge 4607

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

m0_51339444的博客 1805

mvc java html页面,如何使用MVC和DAO模式在JSP页面的HTML中显示JDBC ResultSet?

小编典典设计良好的MVC方法中,JSP文件不应包含任何Java代码行,而Servlet类不应包含任何JDBC代码行。假设要在网上商店中显示产品列表,则需要创建以下代码。一个Product代表产品的真实世界的实体类,它应该只是一个Javabean的。public class Product {private Long id;private String name;private String des...

weixin_42315996的博客 147

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ONGL 在jsp 页面得到后台传过来的对象值, DAO层得到Oracle序列

ONGL 在jsp 页面得到后台传过来的对象值 文章分类:Web前端 1、在jsp页面引入包 Html代码 <%@ page import="com.opensymphony.xwork.util.OgnlValueStack"%> <%@ page import="com.opensymphony.xwork.util.OgnlValueStack...

weixin_30396699的博客 161

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java dao实现_java DAO实现

DAO及servlet控制页面跳转1.建立数据库及表(使用mysql数据库)create database bookdb;create table `bookdb`.`book`(bookId int,bookName varchar(40),bookWriter varchar(40));2.建立BOOK对象建立新的web project BookStore建立新的com.mike.vo包,在此...

weixin_39621178的博客 283

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一句话理解 之 servlet jsp页面 Dao javaBean 之间的逻辑关系

由jsp页面发出一个查询的request请求到Servlet并提交部分参数,Servlet接到请求后先调用Dao封装好了的方法,通过javaBean链接数据库在调用已经封装好了的类,带入参数进行查询,查询完成后将Result封装到List对象,再通过转发将封装好了的list对象发送到你要显示数据的页面,然后用EL表达式得到并显示出数据就可以了。 转载于:https://www.cnblogs.co...

weixin_30468137的博客 240

角色管理页面、实体、service、dao创建顺序详细

第一步:在实体entity包里创建Role.java package com.ischoolbar.programmer.entity.admin; import org.springframework.stereotype.Component; /** * 角色role实体 * @author llq * */ @Component public class Role { private Long id; private String name; private String

awodwde的博客 500

mvc中jsp文件调用java_使用MVC和DAO模式在JSP页面中以HTML格式显示JDBC ResultSet

我不知道如何将ResultSet从类文件返回到JSP页面好吧,你没有。点MVC是你的模型(单独的中号在这种情况下DB信息)从您的视图(V一个jsp,在这种情况下),以这样的方式您可以更改视图,而无需制动应用。为此,您可以使用中间对象来表示您的数据(通常称为DTO - 在数据传输对象之后 - ,现在不知道它们如何调用它),以及其他要获取它的对象(通常是DAO)。所以基本上你有你的JSP文件,获取请求...

weixin_29337389的博客 185

javawebday45(DAO层进行接口对象化dao层优化和页面连接数据库 )

UserDao 修改项目 1、把UserDao修改为接口,然后把原来的UserDao修改类名为UserDaoImp 2、修改UserService中对UserDao的实例化:private UserDao userDao = Daofactory.getUserDao(); 1、DAO模式 DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在...

civilizationV的博客 404

DAO 设计模式

介绍 DAO功能是数据操作.客户发送数据到显示层,显示层发送数据到业务层,业务发送数据到数据层,数据层进行持久化.即.保存进入databases 一些简称 BO 业务对象的简称 DAO 一个数据访问对象,增删查改 PO数据库一条记录,映射成javaBean对象,拥有getter/setter方法 为什么使用 把jdbc的操作进行分离,即数据库的操作和业务...

测试0901-1 132

JSP开发模式(DAO模式)并使用DAO模式完成用户的添加与用户的登陆以及用户信息的输出等

DAO(Data Access Object,数据访问对象), JSP Model1采用JSP+JavaBean的技术,将页面显示和业务逻辑分开。其中,JSP实现流程控制和页面显示,JavaBean对象封装数据和业务逻辑。JSP Model1的工作原理如下图所示。 纯JSP开发程序存在以下问题: 1.所有的JDBC代码写在JSP页面中,维护困难; 2.JSP中不应该使用任何sql包,即:不能再JSP中直接使用java.sql.*,这些数据处理包应该放在专门的类中。 3.规范化的数据处理模式为DAO模式。

hey,欢迎浏览我的博客,希望能给你提供帮助。 2813

手写dao层实现基本的crud操作

手写dao层,封装了dao的CRUD和条件查询基本操作,可以根据泛型进行相应的实体类的dao操作

linyubing 238

ssh中dao、service和action使用心得

以前一直对这三层的关系不太熟悉,最近做了几个东西,逐渐有一些了解了,写出来和大家分享一下,同时看看各位还有什么好方法。。。 Dao层: 一个Dao对应一个PO类,负责这个类的基本操作:增删改查等。 Action: 一个Action对应一个页面,响应这个页面的所有操作。 Service: 以前一直对Service的功能不太清晰,现在觉得,一个Service对应一个Action,负责向上提

qq690388648的专栏 5340

Dao层,Service层,Servlet层运用的自我理解

Dao层 先声明一个接口类,类里声明一些将会用的方法, 同一层内写一个实现这个接口类的类,重写接口类里的方法 方法主要是处理数据的方法, public interface IStuClassDao { public List findAllStuClassInfo(); public Map findStuClassById(int classId) ; pu

Cod951118的博客 1万+

MVC中model、dao、view、controlller、service之间的关系

Model:是事物的模型,如Person.java,定义人的属性行为。pojo,OR maping,持久层 Dao:是持久化操作代码编写处,与数据库对接,如对Person进行增删改查。 Service:是业务代码实现层。调用dao层接口。 Controller:是用户页面访问控制层,如跳转,具体业务逻辑则调用Service层的方法、接口。 View:是用户视图层,即页面代码html、js等...

weixin_30340617的博客 737
上一篇: 基础JSP学习笔记
下一篇: 重构,是否适合“当前”开发模式?
NationSoftware
博客等级 码龄18年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值