DAO:data access object,数据访问对象
软件开发过程中 系统的设计开发一般分层设计,一般分为 表现层 控制层 业务逻辑层 数据层,以此实现软件层次结构分离 各司其职。
“DB层”,这一层存放了链接数据库的字符串,以及JdbcTemplate类,直接访问数据库。因为在java中,执行SQL语句的函数按照返回值可以分为三类,所以在这一层定义了JDBC模版类(JdbcTemplate),每一次使用操作数据库时都要执行这一层的三个方法其中一个。
“DAO层(Data Access Object数据访问对象层)”,这一层存放了SQL语句(并不执行SQL语句,语句传给DB层执行)。这一层调用“DB层”访问数据库,它只知道“DB层”的存在,不知道数据库的存在。
“SERVICE层”,业务逻辑层,因为一个业务的实现,并不是一次数据库访问就可以完成的,所以这一层通过N次调用“DAO层的方法”实现业务逻辑,它只知道“DAO层”的存在,不知道“DB层”和数据库的存在。
“ACTION层”,调用业务逻辑层,根据返回的结果,控制JSP页面显示。它只知道业务层的存在。这一层是入侵者的攻击平台。
“Form层”,把用户POST提交的信息封装成Form对象,经过验证后提交给ACTION层处理。
“JSP层”(显示层),这一层是最终显示给用户看的页面,同时也是入侵者的攻击平台。
用户通过访问ACTION层,自动会发生:“ACTION调用SERVICE,SERVICE调用DAO,DAO调用DB,DB执行SQL语句返回结果给 DAO,DAO返回给SERVICE,SERVICE返回给ACTION,ACTION把数据显示到JSP里返回给用户”。
简单的例子就是,在业务逻辑层中出现了jdbc等等底层的访问操作数据库的代码,这样对代码的分层结构是很不合理的,而且耦合性也很厉害,更不利于后期开发,所以我们把访问和操作数据库的这些代码单独分离出来,简单的说 dao层 就是对数据库中数据的增删改查等操作封装在专门的类里面,在业务逻辑层中如果要访问数据的时候,直接调用该dao类(包括了如何访问数据库和数据的增删改查等等代码),就可以返回数据,而不需要再在业务逻辑层中写这些代码。