Java Web开发中,业务逻辑写在SQL里好还是代码里好呢?有什么建议吗?
谢邀~关注我,了解更多关于开发、架构的分享
个人建议,普通的业务逻辑尽量写在后台代码中,尽量避免写在SQL中,并且尽量避免使用存储过程。
不可否认将业务逻辑写在SQL或存储过程中,也是有这种做法的优点,比如:可以减少网络交互的成本,原本后台程序需要多次访问数据库,现在可以用复杂的SQL或者存储过程封装好,然后程序调用一次即可。
但是复杂SQL和存储过程也有很大的缺点:
不可移植性,每种数据库的语法多多少少都会有一些差异;如果SQL中使用到数据的一些函数、方法,而这些又是该数据独有的,那么很难做数据库的迁移。
业务逻辑会存在SQL和程序中,这种业务逻辑多处存在,会让后期的系统维护和调试都变得更加困难。
数据库中所支持的函数及语法不一定可以满足所有的需求,相比来说,编程语言中的功能更加的强大。
如果SQL、存储过程中有复杂的计算,也会增加数据库机器的压力;并且很难做到分布式部署。
相比编程语言,业务逻辑写在SQL、存储过程中,很难做到业务逻辑的抽象,所以从代码复用的角度来看,编程语言更胜一筹。
所以,普通业务逻辑尽量不要使用复杂SQL或存储过程,而如果是报表统计或者ETL抽取等功能,可以根据实际的情况,采用复杂SQL或者存储过程来处理。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
如果是小项目,业务层写在存储过程中也无妨,如果是大型项目,劝你还是封装起来写代码里,假设大型项目的业务层写在存储过程中,抛开性能不说,后期维护起来豪不夸张的说就三个字:要你命
关于这个问题应该分场景,不能一概而论。中小项目推荐使用存储过程解决大部分业务,代码量少,方便维护。大型项目涉及到分布式,缓存等等,考虑到数据库的开销就不建议太过依托数据库处理了,因为大并发下数据库处理复杂业务根本处理不过来。
如果想学好Java编程,Java项目实战是不是很重要?该如何掌握java编程?
如果想学好Java编程,Java项目实战是不是很重要?该如何掌握java编程?要学好编程,项目实战都很重要,并不只是Java。目前Java算是比较热的开发工具,但同时也是因为热而聚集了大批在此战线上奋斗的程序员,因此竞争是比较大的。当然市场永远不缺的就是普通者,而缺少的是有能力有经验的能力者。
对于想学习Java编程,要入门并不难。但要对Java深入到一定的水准,那也并不是一件容易的事情。没有经过众多项目的实践锤炼,最终锻造不出优秀的Java程序师,当然有天才除外那也是极少。很多理论上学习Java的所谓牛逼者,可能一到项目战场就被各种各样的问题搞得手足无措。
所以如果从项目锻炼的角度来看,无疑要掌握好Java,最好的办法依然是实践,边学习边实践。实践包括实际的项目,也可以是模拟项目。学开发工具与学习其它知识一样要基础扎实,并不是说要全部记住,但那些基础语法、基础框架、常用的类等要做到熟悉,才能在此基础上举一反三。而且最重要的是边学习便要动手,就是实践,要一行一行代码敲入开发环境,亲自去测试然后去理解。
大部分的学习都是由浅入深,开发工具也一样。Java学习的知识由浅入深比如:
Java相关介绍、安装配置环境、Java程序入门;
编程基础比如:常、变量、数据类型、运算符、流程控制、方法、数组等;
面向对象比如:类与对象、封装、继承、多态、抽象类、接口;
常用类、集合、异常、IO、多线程、网络编程、反射、与数据库的处理等;
JavaWeb开发的核心,比如:XML、Servlet、HTTP、JSP、JDBC、Ajax等;
框架、Maven等等;
通过上述学习基本可以参与到项目中去,在项目中进一步提高及拓展。真正一个项目涉及到的,还不只上面这些知识。不一定要真实的项目,可以自己找一些或想定一些项目来做,边做便会发现有很多问题出现,这时就会根据问题寻找解决的方法,同时拓展Java的知识范围。这样不停的用项目来提高自己是比较好的方法。
更多分享及互动,欢迎点击右上角关注【东风高扬】。
1.基础课程来一遍
2.实践项目来一遍(一般书里都有试题)
3.查缺补漏来一遍
4.以上过程再来一遍
5.科技前沿了解下
6.英语单词背一下
7.JAVA书还是很多的,看电子的就行
8.多读书,读好书,对于日常编程来说,《代码清洁之道》,《敏捷设计-原则,实践……》这两本书会叫你怎么写出好代码
是很重要,因为找工作企业也是看中你的编程技术,项目经验,这些都代表着你能够直接上手公司项目以及做到什么程度!
第一阶段:Java基础语法
内容:运行环境、关键字、数据类型、运算符、方法、条件结构、循环结构、方法重载、数组
这个阶段给你这样去安排:运行环境话一天的时间,关键字花一天,数据类型、运算符花一天,条件结构、循环结构给你一个星期7天,方法重载、数组也给你一个星期7天,这里可以做做简单的学生管理系统练手
第二阶段:面向对象和封装
内容:面向对象、this、构造方法
这里总的一周7天时间怎么也够了
第三阶段:Java语言高级
内容:常用API、继承和多态、集合、异常、多线程、网络编程、MySQL、JDBC
这里常用API给你一天,继承和多态给你一天,集合给你一周7天,多线程、网络编程给你一周7天,至此,JavaSE的内容完毕,总的时间为40天
MySQL、JDBC我觉得20天怎么都够了
然后总的时间就是2个月了,2个月学完JavaSE跟数据库和JDBC,也算是中等的速度水平了
第四阶段:Java Web
内容:前端三剑客、XML、Tomcat、Servlet、HTTP、九大内置对象、JSP、EL、JSTL、Filter、Listener、Jquery、Ajax、JSON、Redis、Maven、BootStrap
这个阶段前端加上Java Web,大概的时间可以花个2个月左右甚至3个月
第五阶段:基本框架SSM
内容:Spring、SpringMVC、MyBatis
这一阶段SSM说实话比较简单的,前提是你之前的内容得学好,不然只会越学越困难,Java语言原本是越学越简单的,花上一个月的时间去学习完全是够了的
前面的基本知识大概就半年能够学完,这也符合大多数的学习时间