Java Web开发中,业务逻辑写在SQL里好还是代码里好呢?有什么建议吗
关于这个问题应该分场景,不能一概而论。中小项目推荐使用存储过程解决大部分业务,代码量少,方便维护。大型项目涉及到分布式,缓存等等,考虑到数据库的开销就不建议太过依托数据库处理了,因为大并发下数据库处理复杂业务根本处理不过来。
目前能想到的场景里 只有统计报表系统 部分报表聚合逻辑适合写在sql中 开发效率较写在中间层要高 大部分报表可以做到sql查询所见即所得。但是 要求研发有很强的集合概念 熟悉库表结构 sql语法 和 各种sql方言
其他场景 例如 各个业务线比入订单流程 等 数据库的作用还是回归存储 比较好 其他的逻辑控制等防在中间层比较好
谢邀~关注我,了解更多关于开发、架构的分享
个人建议,普通的业务逻辑尽量写在后台代码中,尽量避免写在SQL中,并且尽量避免使用存储过程。
不可否认将业务逻辑写在SQL或存储过程中,也是有这种做法的优点,比如:可以减少网络交互的成本,原本后台程序需要多次访问数据库,现在可以用复杂的SQL或者存储过程封装好,然后程序调用一次即可。
但是复杂SQL和存储过程也有很大的缺点:
不可移植性,每种数据库的语法多多少少都会有一些差异;如果SQL中使用到数据的一些函数、方法,而这些又是该数据独有的,那么很难做数据库的迁移。
业务逻辑会存在SQL和程序中,这种业务逻辑多处存在,会让后期的系统维护和调试都变得更加困难。
数据库中所支持的函数及语法不一定可以满足所有的需求,相比来说,编程语言中的功能更加的强大。
如果SQL、存储过程中有复杂的计算,也会增加数据库机器的压力;并且很难做到分布式部署。
相比编程语言,业务逻辑写在SQL、存储过程中,很难做到业务逻辑的抽象,所以从代码复用的角度来看,编程语言更胜一筹。
所以,普通业务逻辑尽量不要使用复杂SQL或存储过程,而如果是报表统计或者ETL抽取等功能,可以根据实际的情况,采用复杂SQL或者存储过程来处理。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
一个web项目全用存储过程加视图,数据库sqlserver,有可实施性吗
可以是可以的啊,但是不推荐,不是目前主流方式。看项目负责人怎么思考的。技术选型没有绝对对错或者完美,还是看项目负责人怎么把控项目需求,没有绝对答案。
但就目前一般其他项目而言,比较少选用此方案。灵活性虽然有,但有限,还是可能需要动代码。目前代码修改发版,也快。
xxs,sql注入等漏洞属于web安全吗
是的,XXS(跨站脚本攻击)和SQL注入漏洞都属于Web安全的范畴。
XXS漏洞指的是攻击者通过在网页中注入恶意脚本代码,使得用户在浏览器中执行恶意脚本,从而获取用户敏感信息或破坏网站的安全。这种漏洞通常出现在没有对用户输入进行充分过滤和转义的情况下。
SQL注入漏洞则是指攻击者通过在Web应用程序的输入字段中注入SQL代码,来控制数据库查询语言,从而获取敏感数据、篡改数据库内容或执行未授权的操作。
这两种漏洞都属于常见的Web安全问题,可以通过合理的输入验证、参数过滤、输出编码、使用预编译语句等一系列安全措施来防范。对于开发Web应用程序的人员来说,非常重要的一点是要充分了解和应用安全最佳实践,以保护用户数据和系统安全。
是的,xxs和sql注入等漏洞属于Web安全范畴。Web应用程序使用各种编程语言和框架,通过HTTP协议与网络用户进行交互。由于它们的互联性和互操作性,Web应用程序也面临着各种安全威胁。
Web漏洞攻击者可以通过利用这些漏洞,获取未授权的访问权限,窃取敏感信息,或者对系统进行破坏。因此,Web安全对于保障用户数据和系统完整性至关重要。