加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 04:27:18 所属栏目:Java 来源:网络整理
导读:我有一个关于mvc应用程序中的数据库访问的问题.我的数据库访问逻辑应该放在哪里? 它应该放在每个模型中吗? (如果我有人模型) Person p = new Person();p.save(); 它应该放在每个控制器中吗? 或者我应该创建一组不同的类来执行数据库逻辑,这意味着除了模型
我有一个关于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即可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读