Spring Mysql Demo
项目基本说明
- Main.java 所在路径
<root>\src\main\java\homework\Main.java
- Spring 命令行启动需重载 __run __方法,故使用 __run __方法列出调用
- 使用持久层框架:
hibernate
- 源数据脚本:以java代码的形式写在项目中 InitService
<root>\src\main\java\homework\service\InitService.java
已配置项目启动时自动建表 - spring配置文件:
<root>\src\main\resources\application.properties
- 记录的时间包含__网络时延__
ER 关系图
数据库设计
- 两个实体,一个关系。
- 用户(user)实体,套餐(scheme)实体,订单(订阅subscription)关系
- 用户 与 订单 oneToMany,用户有订单外键
- 订单 与 套餐 manyToOne,订单有套餐外键
- 核心**
- 用户记录各种功能的使用时长
- 订单记录用户的订阅记录,通过设置 startAt 开始时间来解决立即有效和下月有效的问题,通过设置isActive来解决取消订单的问题
- 套餐记录所有免费功能和套餐价格
操作说明
操作1:查询用户订阅历史
操作设计
运行截图与时间
操作2:用户订购套餐
操作设计
运行截图与时间
操作3:用户退订
操作设计
运行时间与截图
操作4:用户通话情况下的资费生成
操作设计
操作说明:系统不记录花费,每次通过用户的功能使用数据计算通话前和通话后的花费之差来得到资费生成量,同理流量
运行时间与截图
操作5:用户在使用流量情况下的资费生成
操作设计
运行时间与截图
操作6:用户月账单的生成
操作设计
运行时间与截图
可能的优化思路
- 使用
hibernate
的时候没有使用懒加载,增加查询开销,如果使用可能更快 - 将用户信息和用户使用各种功能的表拆开,这样能够增加功能变化的灵活性