我对MVC应用程序中的数据库访问有疑问。我的数据库访问逻辑应该放在哪里?
是否应将其放置在每个模型中?(如果我有一个人物模型)
Person p = new Person();
p.save();
是否应将其放置在每个控制器中?还是应该仅创建一组不同的类来执行数据库逻辑,这意味着除了模型,视图和控制器之外,我还有一个额外的层?
怎么做?另外,如果使用ORM,该怎么办?
在MVC模式中,M表示模型,V表示视图,C表示控制器。常见的MVC应用程序进度是,一旦请求到来,控制器就将其获取并进行必要的处理,检索结果数据,然后将结果数据传递给视图以进行渲染。渲染视图层后,它将通过GUI显示给用户。
控制器可以看作是一个指挥官,它控制着过程,但是在控制器中处理数据检索并不好。模型应负责检索和组织数据。这意味着数据对象应该存储在Model中而不是Controller中,Controller调用Model来检索数据对象。
对于您的情况,我的建议是它需要以下组件:
PersonController
,它调用PersonService.savePerson(Person person)
方法保存数据(或在其他情况下检索结果)。我建议控制器层应该很薄。PersonService
,它具有方法savePerson(Person person)
,此方法调用PersonDAO.savePerson(Person person)
方法来保存/检索项目数据(此处保存数据),并可能进行其他处理。这里是业务逻辑。PersonDAO
,它有几种方法可以处理Person
对象(如savePerson(Person person)
,getAllPersons()
),在这一层中处理数据库。但是这些方法应该与业务逻辑无关(因为应该处理业务逻辑PersonService
)。Person
对象,它是值对象,它只是定义什么属性一个Person
应该有,像name
,age
等等,与get/set
方法,用于通过不同的层传送数据。它根本不处理数据库。对于不复杂的应用程序,服务层不是非常必要,可以集成到控制器层,这意味着可以PersonController
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句