存储过程(StoreProcedure)与业务逻辑

【3D目标检测】MMdetection3d——搭建IS-Fusion环境+nuScenes数据集训练 搭建IS-Fusion环境+nuScenes数据集训练 阅读详情

                                                            存储过程(StoreProcedure)与业务逻辑

事情的由来是这样的,昨天无意在网上看到一篇关于“是否Hibernate可以使用存储过程?”的帖子。后来看到介绍说在最新的Hibernate 3已经支持存储过程了。

想想刚开始做项目的时候,我们当时的项目经理就是把很复杂的逻辑都写在SP中的,其运行效率用飞快来形容一点也不夸张,我承认直到今天我依然对SP有种特殊的感情,毕竟我在后面很多项目中都用到了SP,不管是SQLSERVER的还是ORACLE。

不过一直以来都有一个疑惑埋藏在心里,业务逻辑到底是放到J2EE业务层实现?还是在数据层(存储过程)实现?为这个问题也和同事之间互相讨论过,各有各的看法,有人嫌存储过程写起来麻烦,有人说移植性差,数据库负荷大等等。。

网上也有很多人不赞成用存储过程来实现,可是我就不明白了,既然SP有这样哪样的“问题”,那为什么数据库要提供存储过程这样强大的功能呢?今天在一个帖子里看到了一个高手的回答:“OLTP的业务逻辑应该放在OO程序中,OLAP的业务逻辑可以考虑用数据库专有的功能(例如存储过程)来实现。”

下面是OLTP和OLAP的介绍。

*************************

联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,

OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。

当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。下表列出了OLTP与OLAP之间的比较。

OLTP
OLAP
用户
操作人员,低层管理人员
决策人员,高级管理人员
功能
日常操作处理
分析决策
DB 设计
面向应用
面向主题
数据
当前的, 最新的细节的, 二维的分立的
历史的, 聚集的, 多维的集成的, 统一的
存取
读/写数十条记录
读上百万条记录
工作单位
简单的事务
复杂的查询
用户数
上千个
上百个
DB 大小
100MB-GB
100GB-TB


*****************************


看了之后和我有一样疑惑的朋友应该会有所收获吧,不过说真的用惯了SP会上瘾的。。。哈哈。

                                                                                                                                                      mx1029 / 2007.08.02
 

Devexpress16.2.6破解工具 Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具 立即下载

相关推荐

逆向实战:拼多多anti-content加密参数的全链路解析与动态对抗策略

本文深入解析了拼多多anti-content加密参数的全链路生成逻辑与动态对抗策略。通过逆向工程实战,详细拆解了包含设备指纹、用户行为采集和动态密钥生成在内的12个关键环节,并提供了可持续对抗的精准模拟方案和自动化更新机制,帮助开发者有效应对拼多多的反爬体系。

weixin_30687051的博客 160

业务逻辑写在存储过程还是后台代码

业务逻辑写在存储过程还是后台代码? 就这个问题,要看所属的行业和所做的业务,需要区别对待。 因为业务要求不一样,传统软件开发(如电信、银行、金融行业)和互联网Web开发的思维方式不一样。 传统的软开行业考虑业务的稳定性、安全性、系统性能;后者主要考虑扩展性、快速迭代、高并发、低成本。 下面说说两者的优势: 1 存储过程优势 性能效率高 因为存储过程已经预先编译,不需要经过数据库服务器解析,执行速度更快 安全性好、稳定性高 调用存储过程只需要参数输入,防止SQL注入,屏蔽了数据库的表结构,隐藏核心业务

俊先生的博客 1818

华硕ROG枪神双系统实战:Ubuntu安装避坑指南

本文是华硕ROG枪神笔记本安装Ubuntu双系统的详细避坑指南。针对其独特的硬件与BIOS设计,文章核心解决了VMD控制器导致硬盘无法识别、驱动兼容性等关键难题,并提供了从BIOS设置、分区方案到安装后驱动配置与性能调优的一站式解决方案,帮助用户实现稳定的双系统体验。

raspberrypi5的博客 545

适合才是正确的 之 “关于业务逻辑加入存储过程”

          业务逻辑在一个系统中可放的地方很多,有的人选择放在存储过程中,有的人会选择放在业务组件中,这些方式都可以进行业务逻辑的判断。既然提供了这些方式都可以实现业务逻辑的判断,就证明它们存在的合理性。就像在设计的过程中,很多人会将进行条件选择语句封装到不同的类的重构,以满足设计中的”开-闭“原则,这样做有他的道理。但并不是说以后就不用条件转移语句了,要不开发语言怎么会支持条件转移语法呢

lonely7345的专栏 1196

Visual Studio Code 打开java项目

在 Visual Studio Code 中打开并运行一个 Java 项目之前,你需要确保你已经完成了一些初始设置。

2674

KEIL 5.38如何手动安装ARM Compiler V5?完整配置流程分享

本文详细介绍了在KEIL 5.38环境下手动安装和配置ARM Compiler V5(AC5)的完整流程,解决历史遗留项目的兼容性问题。从获取安装包、环境变量设置到KEIL集成配置,逐步指导开发者完成AC5的部署,并提供了常见错误排查和性能优化建议,帮助开发者高效维护基于C编译器的老项目。

weixin_29168813的博客 628

适合才是正确的 之 “关于业务逻辑加入存储过程”

业务逻辑在一个系统中可放的地方很多,有的人选择放在存储过程中,有的人会选择放在业务组件中,这些方式都可以进行业务逻辑的判断。既然提供了这些方式都可以实现业务逻辑的判断,就证明它们存在的合理性。就像在设计的过程中,很多人会将进行条件选择语句封装到不同的类的重构,以满足设计中的”开-闭“原则,这样做有他的道理。但并不是说以后就不用条件转移语句了,要不开发语言怎么会支持条件转移语...

weixin_34120274的博客 243

200_matlab处理NCEP数据并画全球彩色的风场图

200_matlab处理NCEP数据并画全球彩色的风场图。

miaobo0的博客 1238

存储过程还是业务逻辑层

1.存储过程是基于计算密集型的业务逻辑。如果是基于操作密集型的就不要用存储过程了 2.所有数据访问在应用层封装为数据访问层,在那里,如果SQL简单的话,直接用SQL;如果SQL复杂,或者数据交互多且中间数据最后不会用到,使用存储过程     业务逻辑层: 优点:功能分层明确,便于在业务逻辑层集中处理业务逻辑,便于业务逻辑的变更与扩展, 缺点:可能要大量的占用与数据库的连接数,可能有大量...

liufengking的专栏 574

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

m0_52031708的博客 3570

Spring Cloud 整合(一) CRUD

Springcloud 整合之 CRUDSpringcloud介绍功能概述为什么要选用Springcloud Springcloud介绍 功能概述 实现微服务 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 为什么要选用Springcloud

Kerwin-Lin的博客 1501

关于将应用逻辑放在存储过程(PL/SQL)或应用层的选择

当今社会强调和谐,我们程序员也不能落后,IT行业经常存在这种和那种语言,这种方法与那种方法之争,其实我觉得这是没必要的,存在既有道理,任何事物都有它的适用的地方,没有最好的,只有最合适的,今天看了篇关于应用逻辑放在存储过程或应用层的讨论,总结了一下其中的观点,欢迎大家拍砖 存储过程:1.编译后生成中间代码,该代码的执行效率远比客户端数据库访问快,但是大多数高级的数据库系统都有statement ...

速风的专栏 514

从 Material Requirements Planning 看 SAP 物料计划的底层控制逻辑

文章摘要:SAP中的MRP(物料需求计划)不仅仅是运行一个程序(如MD01N),其关键在于主数据和组织层级的正确配置。MRP的核心是解决"何时需要多少物料"的问题,涉及采购、生产、库存等多种供应来源。物料主数据的MRP视图必须在组织层级(如工厂、存储位置)下维护,不同层级的计划逻辑可能完全不同。S/4HANA更强调MRP Area作为细分计划单位,取代传统存储位置MRP。实施时需注意MRP Profile的合理使用,避免批量错误,并特别关注物料生命周期管理(如停用物料和替代件),这些因素共同决定了MRP能否

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

从存储过程说起,浅析业务逻辑写在数据库中还是应用程序中

从存储过程说起

乱世之牙 8191

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

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

NTscan扫描工具

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

业务逻辑层与存储过程、触发器优缺点对比

存储过程:1.编译后生成中间代码,该代码的执行效率远比客户端数据库访问快,但是大多数高级的数据库系统都有statementcache的,所以编译sql的花费没什么影响。但是执行存储过程要比直接执行sql花费更多(检查权限等),所以对于很简单的sql,存储过程没有什么优势。2.使用的是服务器端游标,而客户端程序使用的是客户端游标,速度快3.不需要象 J2EE 的程序那样要部署,...

weixin_34184561的博客 403

OV9734 DATASHEET,完整规格书

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

DB2 用import from 文件 insert_update 更新指定字段

DB2的导入数据,平时也只是用一下导入空表数据。可今天遇到一个问题,需要用外部的数据来更新已有数据的指定字段。一开始想,简单啊:) db2 import from xx.txt of del insert_update into t_aa 。。。写到这里傻了。。。要光是执行sql直接跟条件where就可以了,可是这里的条件都在外部文件里啊。。。。 于是在百度上找了半天,不是你抄我,就是

6970

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Struts2 的Result Annotation配置

虽然struts2推出的时间不短了,由于对struts的厌烦,所以一直对其不怎么感冒,也懒得去关心他。可是最近有个内部用的新项目,本来想用JSF做,但由于JSF页面组件的控制非常麻烦,而且和SPRING ACEGI接合上一直找不到最好的方案,再加上同事的强烈要求下,最后还是决定用struts2了。。。(其实我想用的JSF啊 555。。。)在google上找了些资料看看,struts2和1.X版

2332

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 126

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 197

Docker Compose:搭建本地多服务开发环境

从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

m0_62221377的博客 453

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 405
上一篇: 剔除List中的重复值
下一篇: 让SQLServer like查询大小写敏感
mx1029
博客等级 码龄24年 5粉丝 9原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值