数据访问对象(Data Access Object,Dao)层主要提供对应 Model 层中的领域对象映射到数据库表的 CRUD 操作。此层由一系列的 DAO 组件组成,这些 DAO 实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。注意在经典Java EE应用中,DAO 层也被称为 EAO 层,EAO 层组件的作用与 DAO 层组件的作用基本相似。只是 EAO 层主要完成对实体(Entity)的 CRUD 操作,因此简称为 EAO 层。DAO 层在 MyBatis 中也被称为 Mapper 层,其通过 SQL 语句的映射完成CRUD操作。
业务逻辑(Service)层主要是综合使用 Model 对象和 Dao 提供的 CRUD 接口,同时结合具体的业务流程来实现具体的业务逻辑。此层由一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露 Domain Object 对象所实现的业务逻辑方法,也可能是依赖 DAO 组件实现的业务逻辑方法。
控制器(Controller)层提供一系列控制器,用以拦截并调用 Service 层的接口处理用户请求。最后,把处理结果传送到视图View层,用于处理用户输入请求和响应输出:从视图读取数据,控制用户输入,并向模型发送数据。Controller 是在 Model 和 View 之间双向传递数据的中间协调者。