作为一名软件工程师,我倾向于在应用层编写业务逻辑,而通常只在数据库中依靠CRUD(创建、检索、更新和删除)操作。另一方面,我遇到过一些应用程序(通常是较旧的应用程序),其中大量的业务逻辑是写在存储过程中的,因此有些人更喜欢在数据库层编写业务逻辑。
对于那些已经或喜欢在存储过程中编写业务逻辑的人来说,使用这种方法的原因是什么呢?
对于那些已经或喜欢在存储过程中编写业务逻辑的人来说,使用这种方法的原因是什么呢?
过去我将业务逻辑放在存储过程中的主要原因是数据库中的事务更容易处理。
如果你的应用程序部署困难且没有应用服务器,那么改变存储过程中的业务逻辑是最有效的部署更改的方式。
我在一个团队中负责建立和维护一个相当大的金融系统,但是对于与数以万计记录相关的操作逻辑,我找不到将其放入应用程序层的方法。
除了性能问题外,如果出现错误,修正存储过程比调试应用程序、修复、重新编译和部署代码所需的停机时间更短。
我的偏好是将任何复杂的业务逻辑从数据库中剥离,仅出于维护目的。如果我在凌晨两点接到电话,我宁愿调试我的应用程序代码,也不愿意尝试逐步执行数据库脚本。
我认为对于我正在处理的老应用程序(银行业务),其中业务逻辑非常复杂,几乎不可能在应用层执行所有这些业务逻辑。而且,当我们将这些逻辑放在应用层时,这会是一个巨大的性能问题,因为需要从数据库中获取更多的数据,导致资源利用率更高(如果在Java层完成,则需要更多的Java对象)和网络问题,性能也会受到影响。