← 返回笔记

工程实践

部门管理系统三部曲:一个业务的三次技术演进

2026-08-18 09:00 JDBCPOI三层架构

用同一个部门职员管理业务复盘集合、POI Excel、JDBC 数据库三版实现的演进过程。

部门管理系统三部曲:一个业务的三次技术演进

来源:Java 语言程序设计实训 第二次 / 第三次(2025-06-30 / 07-03)· 整理:婉萤

同一个「部门职员管理系统」,我用三种技术实现了三遍。回头看,这三次迭代恰好画出了一条清晰的成长路线:

第一版:纯集合(内存态)

List<Dept> 存数据,Scanner 菜单驱动。注册、查询、删除功能都有,但程序一关数据就没了

这一版练的是基础:泛型 List<Emp>、实体类设计、视图层交互。

第二版:POI Excel 持久化

引入 Apache POI,数据存进 Excel 文件:

  • 注册职员 → 写入 .xls 文件(HSSFWorkbook / HSSFRow / HSSFCell)
  • 查询职员 → 读取 Excel 逐行解析
  • 附带练了遍历集合时修改的正确姿势:用迭代器的 remove(),而不是在 for-each 里直接删——后者会抛 ConcurrentModificationException

第三版:JDBC + MySQL 持久化

Excel 终究不是数据库。第三版把存储层换成 MySQL:

  • 引入 mysql-connector,注册/查询职员走真实 SQL
  • 核心概念:缓存数据过期。内存 List 是缓存,数据库是事实源——数据写库后要同步刷新缓存,否则查到的是旧数据
  • 这也是「缓存与数据库一致性」问题的第一次亲身体验:先更新数据库、再失效缓存,而不是反过来

收获

三版对比让我真正理解了「分层架构」为什么存在:存储方式从 List → Excel → MySQL 换了个遍,但业务逻辑(注册、查询、删除职员)几乎没变。数据访问层隔离得越干净,换存储的成本就越低。这也是后来学 MyBatis、Spring Data JPA 时一点就通的原因。