J2EE(現 Jakarta EE)規範龐雜,技術選型陷阱眾多。本文結合實戰經驗,提煉出六大架構設計核心原則,助力構建高內聚、低耦合、可演進的企業級系統。
核心觀點:架構服務於業務,技術選型必須基於具體業務場景、併發量、資料量、一致性要求、團隊能力、遺留系統整合等綜合考量。
| 業務場景 | 推薦方案 | 關鍵考量 |
|---|---|---|
| 低併發、簡單 CRUD、外部資料導入 | JDBC + Connection Pool | 開發效率、維護成本低 |
| 高併發、複雜領域模型、強一致性 | CMP Entity Bean + 二級快取 (JBoss: commit-option D) | 容器管理事務、快取命中率、效能調優入口 |
| 分散式事務、多資料源 | JTA + XADataSource | 兩階段提交、效能折中 |
| 輕量級、快速迭代、微服務前身 | Spring + Hibernate/MyBatis | POJO 開發、依賴注入、測試友好 |
避坑指南:不要盲目追隨「最新技術」,Entity Bean 在 EJB 2.x 經過重大改進(Local Interface、CMR、Read-Only),配合容器調優(JBoss standardjboss.xml Bean Lock Policy)可滿足高併發場景。關鍵在於效能調優在容器層而非資料庫層,保持資料庫移植性。
原則:單一專案不超過 3 個核心框架,深度掌握優於廣度涉獵。研究框架源碼(如 realMethods 實現模式)優於引入新框架。
| 層級 | 數據表示 | 職責 | 邊界 |
|---|---|---|---|
| Web/表現層 | Form Bean / DTO / VO | 頁面綁定、參數校驗、國際化 | Action/Controller 止 |
| 業務/服務層 | Domain Object / BO | 業務規則、事務邊界、領域邏輯 | Service 介面止 |
| 持久/資料層 | Entity / PO | ORM 映射、SQL 執行、資料庫交互 | DAO/Repository 止 |
鐵律:Entity/PO 絕不 直接傳遞至 JSP/View,Form Bean 絕不 滲透至 Service/DAO。違反將導致層級耦合、修改連鎖反應、安全風險(大量欄位暴露)。
| 方案 | 建模 | IDE | 版本控制 | CI/CD | 應用伺服器 |
|---|---|---|---|---|---|
| 商業成熟 | Together/EA | JBuilder/IntelliJ | SVN/Git | Jenkins | JBoss/WildFly |
| IBM 體系 | RSA/RSD | WebSphere Studio | ClearCase/Git | UrbanCode | WebSphere |
| 輕量開源 | PlantUML/StarUML | Eclipse/VS Code | Git | GitLab CI/GitHub Actions | Tomcat/Jetty/WildFly |
/\
/ \ E2E/UI 測試 (少、慢、脆) - Selenium, Cypress
/----\ 整合測試 (適中) - Spring Test, Testcontainers, JMeter
/------\ 單元測試 (多、快、穩) - JUnit 5, Mockito, AssertJ
/--------\
J2EE 架構設計無銀彈,唯有業務導向、分層解耦、標準化工鏈、測試驅動、持續演進六大原則貫穿始終。架構師的核心價值在於:在約束條件下做出最佳權衡,建立團隊共識,並隨業務演進持續重構。記住:好架構是演進出來的,不是設計出來的。