关于程序分层
首先简单说一下,数据库连接池与DButils的方便之处,比如我们要获得数据库A中的B表中的一条数据:
-
普通方法:
首先执行,注册驱动,提供URL,获取连接,创建statement对象,
在这里分为查询语句,和增删改语句
如果是查询语句:我们要获得结果集,然后根据B表中的字段类型对应,创建出不同的包装类来获得相应对象,并且一旦连接关闭,我们就无法使用结果集
这时我们需要创建与表有映射关系的JavaBean类来保存结果,并且需要我们手动封装数据。
而且在获得连接执行查询语句时,手写判断类型的语句,来获取数据。
并且如果在实际当中,发生许多连接重复提交申请,获取连接,就会造成数据库连接的多次创建与关闭,这非常耗时。
-
使用数据库连接池和DButils工具类
拿德鲁伊连接池举例,在使用连接池时,只需要提供相应配置文件,然后创建DataSource,通过DataSource就可以获取连接,简单省力,并且在底层中,由于重写了close方法,连接并不是真正的关闭了,而是重新放回了连接池中,我们还可以通过绑定线程的方式,来获取固定连接,实现数据库的事务处理
在执行SQL语句时,并不需要创建statement对象,因为DButils底层封装了SQL的执行,这会使我们在开发中节约大量的时间,并且还有相应的BeanUtils工具类,该工具类可以帮助把数据赋给JavaBean类,这样就不用我们手动封装
接下来关于程序分层的问题:
首先是MVC的概念
MVC全称:Model模型,View视图、Controller控制器
MVC最早出现在JavaEE三层中的Web层,它可以有效的直到Web层的代码如何有效分离,单独工作
View视图:只负责数据和界面的显示,不接受任何与显示数据无关的代码,便于程序员和美工的分工合作——JSP/HTML
Controller控制器:只负责接收请求,调用业务层的代码处理请求,然后派发页面,是一个“调度者”的角色——Servlet,转到某个页面或者谁重定向到某个页面
Model模型:将与业务逻辑相关的数据封装为具体的JavaBean类,其中不掺杂任何与数据处理相关的代码——JavaBean/domain/pojo/entity
具体可以分为,DAO层,service层,web层,JavaBean层
DAO层,主要做创建SQL语句,与数据连接并返回结果的操作,不对数据做任何处理,本层可以写一个通过的BasicDao类,创建通用的增删改查方法,其他还可以每一张表都分出一个DAO类,用于操作表中具体数据。
service层,主要做数据分析处理操作,本层中有一个具体的DAO对象
web层,主要存放Servlet程序,通过调用service获取想要的数据返回给前端页面上,每一个Servlet程序就是一个服务
JavaBean层,与数据库某张表有映射关系的类,要提供set、get方法,因为DButils工具类底层是通过反射来创建对象的
其他的还可以有工具类,里面提供一些好用的工具,比如,JDBCutils,用于获取连接,关闭连接等操作,WebUtils工具类,用来封装JavaBean,或者操作其他数据,filter过滤器,用于过滤页面,Listener监听器等一些包
如果要获取一条数据,传到前端页面上,实际上的操作就是:
通过JDBCutils获取连接,在DAO层通过连接执行SQL语句,并且以JavaBean,或者存放JavaBean的集合等形式返回结果,接着service层得到结果,根据自己的业务,对结果处理,然后到servlet层,相应服务通过相应service来得到想要的数据,接着将结果传递给前端上
至于其他如utils包都是辅助这个过程更好执行的