存储过程与业务类实现业务的差异比较
以下比较不太全面,纯粹是个人的理解。可能是针对前一篇文章的补充与说明
1、批量数据的处理比较
业务逻辑:单位A部门划转到B部门,业务规则是把A部门的100人的关联单位改为B部门,同时在人员岗位变化子表里增加一条变动记录。
业务实现:
1)存储过程实现(SP实现)(两个SQL语句)
insert into 岗位变化子表(变化前部门、变化前岗位、变化后部门、变化后岗位、生效时间、操作人、操作时间) select A,岗位,B,岗位,sysdate,当前登录用户,sysdate from 员工表 where 部门ID=A;--完成插入100条子表的数据
update 员工表 set 部门ID=B where 部门ID=A; --更新员工的部门关联
commit; --最后提交,SP本身就开启了事务机制,所以可以放心操作。
2)业务类实现1(符合面向对象的原则)
获得A部门员工对象,一般是100个员工对象的Collection,即生成的SQL语句是把所有的员工表的字段都查询出来,然后循环进行员工对象属性的变更与保存、子对象的创建与保存等业务。
3)业务类实现2(有点不太符合面向对象的原则,但效率肯定比前面一种高)
按SP方式执行SQL语句。当然要注意开启事务处理,否则可能会产生垃圾数据哟。
当然可能还有除了这三种之外的实现方式,但这三种应该是最常见的了。其它的内容这里就不展开说了。希望非专业人士可以看明白。专业人士可以自行计算一下数据库连接的次数及需要传输的数据量。
需求变更:增加操作IP的记录
所有都要做的事情:增加【岗位变化子表】数据表字段:操作IP
1)SP调整
增加参数IP,修改第一条insert语句即可。
关联修改:调用存储过程方法重新调整。重新编译发布
2)业务实现1
修改岗位变化子表的实体类。(一般是重新生成即可)
修改业务逻辑类
重新编译发布
3)业务实现2
修改岗位变化子表的实体类。(一般是重新生成即可)
修改SQL语句
重新编译发布
2、数据统计类
业务逻辑:定时(每小时或每天)更新用户排行榜(如积分排行榜),假设用户积分数据8千万条数据。
业务实现:SP的方式
创建一个Job队列执行设定的存储过程,把统计的结果存到积分排行榜的数据表里。
适应需求变化:统计的规则可能经常变化,特别是积分系统的调整也是非常频繁的(可能一周就会有一次,特别是项目上线前期),存储过程可以很快的修改测试与部署。不需要指定专门的时间去停止所有的Web服务器更新应用来满足需求的变化。
先写这些吧,写东西太耗时间了。还是等压力测试的数据出来再做一些分析吧。
转载于:https://www.cnblogs.com/liubiqu/archive/2010/08/04/1792248.html
存储过程与业务类实现业务的差异比较相关推荐
- 【飞秋】存储过程与业务类实现业务的差异比较
以下比较不太全面,纯粹是个人的理解.可能是针对前一篇文章的补充与说明 1.批量数据的处理比较 业务逻辑:单位A部门划转到B部门,业务规则是把A部门的100人的关联单位改为B部门,同时在人员岗位变化子表 ...
- java业务类_Java_业务层开发
业务是整个项目的核心,每一个业务的处理都是由控制层调用的(本次不考虑控制层,只考虑客户端直接调用业务层的形式),所以整个代码里业务层依然是一个标准,控制层要想取得业务层对象,一定也是依靠工厂类. 1. ...
- 2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出“方法 method() 被
2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出"方法 metho ...
- Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式
在不论什么一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,第二种是与系统核心业务无关但同一时候又提供十分重要服务bean,我们称之为服务类.业务类的bean ...
- 【电信增值业务学习笔记】8 3G视频类增值业务
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.视频类相关标准: 基于ISDN网络的H.320系统 基于IP网的H.323系统 基于PSTN网络的H.324 ...
- 线程池方式调用spring mvc的业务类的简单实例
开发环境:springmvc 业务场景: 大字段附件从数据表中迁移到 另外一张表保存文件路径并存储文件到磁盘 的小程序. 实现目标:通过url 直接调用一次运行即可成功: http:ip:port/w ...
- 使用DLL封装窗体和业务类
软件开发的一种架构思路: 使用DLL封装一组窗体和业务类,真正的模块化编程,方便工作组进行开发的分工与合作. 打个比方: 经常开发进销存软件,那么我们把"入库单.返厂单.盘点单...&quo ...
- Quartz业务类无法注入Spring对象问题
tags: 解决错误, titile: Quartz业务类无法注入Spring对象问题 Quartz业务类无法注入Spring对象问题 在刚开始遇到的时候还以为是Spring配置哪里错误了,结果搞了那 ...
- java 用面向接口编程的方式开发打印机_Java“打印机”模型理解面向接口编程。实现接口定义类,接口实现类,核心“业务”类分离...
接口定义类 IinkBox.java package printerDemo.iface; public interface IInkBox { public String getColor(); } ...
- 组织人事类主数据业务梳理以及流程编排
主数据是描述企业核心业务实体的数据,是企业核心业务的主要构成部分,各个订单.合同以及业务的主体,在企业内部被重复.共享应用的数据,主数据跨越企业各个业务部门以及各类业务系统,是应用系统之间数据交互的基 ...
最新文章
- 我写的代码,又被CTO骂了......
- 复旦大学邱锡鹏教授等「Transformers全面综述」论文
- 异构智能吴韧:物联网是“伪命题”?智联网才是未来
- zeros--创建零矩阵
- 搜索推荐广告中的Position Bias:美团DPIN
- Oracle基础视频教程
- 金蝶生成凭证模板_金蝶k3凭证生成
- CPU的使用率和负载的区别
- 微软部分专卖店地址选定 今秋开张
- [CTFHub] Web RCE Write ups
- 战争英雄、同性恋和计算机科学的奠基人
- 怎样编配吉他独奏曲(上)
- 3.Regression(二)
- 产品经理知识体系专题
- WinForm实现Loading等待界面
- 2.4 PIMPLE算法 | 2.5 附加显式力的压力速度耦合(OpenFOAM理论笔记系列)
- python itchat实现微信自动回复
- 【悟空云课堂】第三十九期:违反信任边界(CWE-501: Trust Boundary Violation)
- 【图像增强】基于gabor滤波器实现指纹增强含Matlab源码
- Java 实现图片裁剪(附代码) | Java工具类