SpringBoot开发,实体Entity和模型Model有何区别?
发布于 作者:苏南大叔 来源:程序如此灵动~

基于SpringBoot
项目,苏南大叔描述一下关于Entity
和Model
的区别联系。在一些情况下,两者是可以互换的。但是,两者也是有区别的。在SpringBoot
项目中,两者的位置都建议放在和controller
平级的model
文件夹下。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10
,openjdk@23.0.2
,IntelliJ IDEA 2024.3.4.1
,maven@3.3.2
,spring boot@2.5.4
,java@17
。
龙套角色
本文的配套例子,基于下面这篇文章修改:
原代码结果中的mvc
结果,已经有了controller
和view
(template
)。本文增加它的model
层。文本中model
文件和entity
文件,都放同一个文件夹src/main/java/com/example/demo/model/
内。

Model
Model
是一个更广泛的概念,用于表示应用程序中的业务逻辑或数据模型。它可以是与数据库无关的类,用于在不同层之间传递数据(如Controller
和Service
层之间)。Model
类可以包含业务逻辑和数据验证,用于封装业务数据,不一定与数据库直接相关。它可以在服务层、控制器层等使用,用于封装业务数据,可能包含业务逻辑和数据处理。
在本文的语境下,主要突出一点:model
不一定和数据库中的表进行关联的。例如:model/User.java
:
Entity(待续)
Entity
通常指代与数据库表直接映射的Java
类,使用JPA
(Persistence API
)注解(如@Entity、@Table、@Id等)来定义。它直接对应数据库中的表结构,每个实例代表表中的一行数据。例如,User类可能对应数据库中的User表。Entity主要用于数据持久化层(DAO/Repository层),与数据库交互,直接映射数据库表。
和数据库紧密绑定的model
,就是entity
了。一般来说,entity
文件和数据库中的表是一一对应的关系。这个关系还涉及到了springboot
中的jpa
的概念。
由于篇幅限制,本文还并未涉及springboot
通过jpa
进行数据库连接相关的概念。所以,下面的entity
代码并不能独立运行使用。配套代码在后续文章中提供。
model/User2.java
:

配套调用
在controller
对上述user
模型文件(user2.java
实体文件需要更多文件配合)进行调用。范例如下:
controller/PageController.java
:

templates/login.html
:
结语
在MVC
的框架设定下,entity
和model
都可以理解为模型。当与数据库深度绑定的时候,就称之为entity
实体了。更多苏南大叔的java
精彩文章,请点击下面的连接:


