在 Java 後端開發中,資料傳輸物件(DTO)的選擇常在 List<Map<String, Object>> 與 List<POJO> 之間權衡。兩者各有優劣,適用場景不同。
| 優點 | 缺點 |
|---|---|
| 無需定義 POJO 類,減少樣板代碼 | 缺乏類型安全,編譯期無法檢測鍵名拼寫錯誤 |
| 字段動態增減,適應頻繁變更的需求 | 代碼可讀性差,無文檔時難以知曉 Map 內部結構 |
| 適用於通用查詢、報表導出等場景 | IDE 自動補全與重構支援有限 |
| 優點 | 缺點 |
|---|---|
| 類名即文檔,語義清晰,易於維護 | 需額外編寫並維護 POJO 類 |
| 編譯期類型檢查,減少運行時錯誤 | 字段變更需同步修改類定義 |
| IDE 完整支援自動補全、重構、查找引用 | 對於極其動態的數據結構顯得笨重 |
現代框架(如 MyBatis、JPA)均完美支援 POJO 映射。若追求極致靈活,可考慮 Record(Java 14+)或 Lombok @Data 簡化 POJO 定義,兼得類型安全與開發效率。