工程实践
部门管理系统三部曲:一个业务的三次技术演进
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 时一点就通的原因。