MVC模型中,模型(Model)是否包含业务逻辑(算法等)和映射到实体表的类?那些被映射的类也被称为模型,因为它们对一些数据进行建模。我的困惑是:模型是否包含业务逻辑?还是只有实体?根据Mozilla文档,它包含了:
视图 - 在Spring应用程序中不存在;
控制器 - Rest控制器(或只是控制器,这取决于您如何构建应用程序);
模型 - 服务、存储库、模型类(???)。
我在这里感到困惑,因为我们在左右两侧都有模型。
谢谢。
编辑:添加代码片段和应用程序结构。
这是Spring应用程序通常的外观。大多数人都这样做。
这是Java文件中模型/实体的样子:
Model: 管理数据和业务逻辑。
我对Java Spring项目的结构感到困惑。有控制器,服务(业务逻辑),存储库(连接到数据库,也称为DAOs)和模型类(由控制器接收并经常映射到数据库实体的对象类)。让我们将其映射到MVC“组件”:视图 - 在Spring应用程序中不存在;
控制器 - Rest控制器(或只是控制器,这取决于您如何构建应用程序);
模型 - 服务、存储库、模型类(???)。
我在这里感到困惑,因为我们在左右两侧都有模型。
谢谢。
编辑:添加代码片段和应用程序结构。
这是Spring应用程序通常的外观。大多数人都这样做。
.
├── BasicSpringAppApplication.java
├── controller
│ └── CustomerController.java
├── model
│ └── Customer.java
├── repository
│ └── CustomerRepository.java
└── service
└── CustomerService.java
这是Java文件中模型/实体的样子:
package com.example.basicspringapp.model;
public class Customer {
private String id;
private String name;
private String surname;
private int age;
//constructors, getters, setters
}
看看我所说的(以及通常所说的)模型,只是一个特定的东西,一个实体。但在MVC中,它不仅仅是这样!模型不仅包括实体,还包括服务和存储库等任何不是视图和控制器的东西。
为什么在通常的Spring应用程序中MVC模式会混乱?对我来说似乎很混乱。为什么人们不将这些类称为实体或类似于此的东西?因为模型对于MVC而言不仅仅是如此。
Customer
,作为一个实体。如果你有一个网站,保存客户列表和他们的信息,Customer
将会是Java中的一个模型类,它会有一些字段,如name
、age
、location
等等。在Hibernate中,我会将其声明为一个实体,在数据库中,我会为其创建一个表,并将其id作为主键。 - Sandro Jcustomer.java
类只有属性,并且是底层持久性对象/表的表示,则通常称为数据传输对象(DTO)。模型类保存存储和检索数据的逻辑,并将该数据形状/投影为DTO。那么,你对两侧都有模型的困惑就不会出现了。 - Anand Sowmithiran