微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 我在哪个层中访问MVC设计中的数据库

我有一个关于mvc应用程序中的数据库访问的问题.我的数据库访问逻辑应该放在哪里?

它应该放在每个模型中吗? (如果我有人模型)

Person p = new Person();
p.save();

它应该放在每个控制器中吗?
或者我应该创建一组不同的类来执行数据库逻辑,这意味着除了模型,视图和控制器之外我还有一个额外的层?

这是怎么做到的?
如果使用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对象,它是value object,它只是用get / set方法定义Person应具有的属性,如名称,年龄等,用于通过不同的层传递数据.它根本不涉及数据库.

对于非复杂的应用程序,服务层不是非常必要的,可以集成到Controller层,这意味着只需PersonController即可.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐