Web in python
文章目录
工具收集
连接重试工具
MVC 架构
参考:
层的功能解释:
- java 中的 MVC 和 python 中的东西注意对应关系
- MVC: Model, View, Controller
- Model: 数据库 model
- View: html 模板渲染
- Controller: 外部的 http 请求路由转换成 内部的函数调用, 即: routers
Service: 服务层包含业务逻辑
- 即 DAO(data accessable objects), 使用模型和可能的数据访问对象来完成操作
- 这里用来对接,外部的访问(Controller)和内部的 Database(Model) 之间的数据访问逻辑和数据转换、处理逻辑
Repository 层:
- 通过 JPA (java persistent API) 访问数据库(序列化)
- Config: 配置相关的类
数据和业务调用流程
- web 访问
- controller: 路由处理
service:
- 没有数据库:Service –> Model
- 有数据库: Service –> DAO –> 数据表对象
层的功能界定
DAO 层
负责数据的读取和写入
- Repository 接口
Repository 的实现类 (Spring JPA, Java Persistent API)
- Spring JPA 是一种基于 Hibernet 和 JPA 实现的 ORM 框架,可以方便的实现 CRUD 和负载的数据库操作
Service 层
功能:
- 外来数据如何还原创建成 DAO 支持的数据对象
内部数据如何组装成外部需要的样子
例如:
- 用户 id 列表
- 用户名列表
- 满足要求的(年龄 > 30)的所有用户
Model (entity) 层
功能:
- 用来和数据库构建关系的 POJO 类
- 用来 Service 等层之间的数据传递
DTO 类 (Data Transfer object)
功能:
- 专门用来 Controller 暴露到外部使用
- 用来在 Service 层中生成,放回给 Controller, Controler 再作为 Response 数据返回
- 类似 python fastapi 的 schema 分层
例子:
- 实际返回的 RealUser 和数据库中 User 不一样,RealUser 内部的属性还包含了他的老师对象列表, 这个 RealUser 是合成的对象,数据库中并不真实存在对应的对象
放置位置:
- 可以专门做一个 dto 包(package)用来存放这些
文章作者
上次更新 2025-02-24 (77fafc9)