Des*_*PRG 3 java database model-view-controller
我有一个关于mvc应用程序中的数据库访问的问题.我的数据库访问逻辑应该放在哪里?
它应该放在每个模型中吗?(如果我有人模型)
Person p = new Person();
p.save();
Run Code Online (Sandbox Code Playgroud)
它应该放在每个控制器中吗?或者我应该创建一组不同的类来执行数据库逻辑,这意味着除了模型,视图和控制器之外我还有一个额外的层?
这是怎么做到的?如果使用ORM怎么办?
在MVC模式中,M表示模型,V表示视图,C表示控制器.一个常见的MVC应用程序进展是,一旦请求到来,控制器就会获取它并进行必要的处理,检索结果数据,然后将结果数据传递给视图进行渲染.渲染视图层后,它通过GUI显示给用户.
控制器可以看作是指挥官,它控制着进程,但是在控制器中处理数据检索并不好.模型应负责检索和组织数据.这意味着数据对象应存储在Model而不是Controller中,Controller调用Model来检索数据对象.
对于您的情况,我的建议是它需要以下组件:
PersonController,它调用PersonService.savePerson(Person person)保存数据的方法(或者在其他情况下检索结果).我建议Controller层应该很薄.PersonService,它有方法savePerson(Person person),这个方法调用PersonDAO.savePerson(Person person)方法来保存/检索项目数据(这里它保存数据),也许还有其他处理方法.业务逻辑在这里.PersonDAO,它有几种处理Person对象的方法(比如savePerson(Person person),getAllPersons()),在这一层处理数据库.但是这些方法应该与业务逻辑独立(因为业务逻辑应该处理PersonService).Person对象,它是值对象,它只是定义什么属性一个Person应该有,像name,age等等,与get/set方法,用于通过不同的层传送数据.它根本不涉及数据库.对于非复杂的应用程序,服务层不是非常必要的,可以集成到Controller层,这意味着可以PersonController.