发表于: 2018-01-29 23:44:04
1 1895
今天完成的事情:
虽然初步完成了任务一的学习,但是回过头来深度思考就发现了自己很多的不足,之前为了完成任务走流程一样的跑通例子,但对各种代码和原理却一知半解,比如之前在连接数据库时只按照别人的例子建立了DAO层,却没有深入了解为什么要用DAO层,而今天曲师兄告诉我还有service层,这让我感到了不能一味的往前走,而且应该先是把基础打好,最起码知道自己为什么要去设立各种层,每一步的意义何在,光知道三层架构,但是为什么要分为三层呢?这些之前我都选择性忽视,觉得会用就行,但这样感觉就是一知半解,所以今天花了一点时间了解一下。
JAVA是一个面向对象的编程,从一开始我就谨记JAVA就是从解决对象中的问题和满足对象的需求的出发。三层架构把整个业务分为界面层、业务逻辑层和数据访问层,为什么要这么分呢?我个人觉得简单来说就是在用户和数据库之间增加了一个层,首先要有用户,然后肯定会有数据库,我之前的代码都是直接向数据操作进行增删改查,当时虽然建立了DAO层,但是却发现在最后的代码中并没有得到应用,直接向数据库操作,那为什么要建立DAO层呢?
通过查看各种博客我了解到了一个新的概念叫做耦合和解耦,我个人感觉这个思路类似于组装电脑,主板上的各种元件耦合在一起,彼此互相配合和影响,但是台式机上面CPU坏了,那么我只需要拔下来买一个新的,这时候我只需要关注主板CPU接口的类型就可以,而不需要管内存、显卡等等,这就是低耦合,如果比作一个系统,那么总体上来说三层架构就把业务分为三大块,他们之间互相配合却又低耦合,我可以方便的更改其中某一层而不用担心其他两侧,往小了说了放在某一层中,其中的各项也应该秉承这个思想。光有理论是不够的,我决定修改自己之前的JDBC来仔细体会DAO层和service层。
首先是我最开始的连接数据库代码,这是其中一个更新数据的代码,可以发现其中有的就是我画红色圈的部分,前面是连接数据库的操作,后面是关闭数据库,如果我想要查找或者插入,那么我还需要再重新来一遍,而要查找不同的数据那么就需要对我这个代码进行修改或者重新写一遍,这个代码包含大量的操作,一旦修改很有可能出现各种错误。可以看出,我对数据库的操作基本上基本上就是连接数据库——实现操作———关闭数据库,连接数据库和关闭数据库本质上和我的操作仅有外部的联系,而且就算是各种同种操作之间也存在大量的重复代码,这个时候就用到了DAO层,也是这个时候我学习到了JDBC和Mytis.
这是我当时做的JDBC
可以明显看到在插入数据时省去了大部分的重复代码,这些省去的代码被放在DAO层中,而对数据库的连接放在bean配置文件中
这样如果我想修改方法类的代码就可以直接在DAO层进行修改,不会涉及到其他方面,首先是降低了大量的重复代码,然后是降低插入数据操作、插入数据代码、连接数据库之间的耦合性,方便维护。
DAO层是属于数据层,是对数据库进行操作,而service层则属于业务层,这个目前我还没有太多的接触,大概意思就是DAO层对数据库进行各种操作,然而现实运用中我们显然不会只是单单的把数据从数据库中取出来,肯定还要进行各种操作以满足各种需求,就像为了解决直接操作数据库带来的各种麻烦而要对各种方法进行封装所以建立DAO层一样,为了避免对DAO层直接操作,降低业务层与DAO层直接的耦合,所以才有了service层,具体应用的好处估计要等我以后用到了才能体会到。
2.实现mybatis与Spring的整合
这个配置文件与单独的mybatis并没有太大的差别,主要是Spring的配置文件
测试类
Spring和mybatis的整合并没有什么难点,我在这卡了一点时间是测试类出了问题,一个插件没有安装导致测试无法使用,还是在曲师兄的帮助下才得到了解决。
Spring和mybatis的整合并没有和mybatis单独连接数据库有明显的优势,那为什么要进行整合呢?Spring是一个整体的框架,以我现在的水平看来应该是让mybatis融入到Spring这个框架当中去,与业务层和UI更好的结合。
明天计划的事情
总结任务一
遇到的问题
junit出现插件错误,最后在曲师兄的帮助下得到了解决。
收获
初步了解三层结构,整合了mybatis和spring。
评论