iT邦幫忙

0

Day 5 - 資料庫設計與 JPA Entity 實作:醫療資料的軟刪除與稽核模型

  • 分享至 

  • xImage
  •  

今日目標
將 Day 4 驗證通過的乾淨資料存入 H2 資料庫。建立病患(Patient)與稽核日誌(ReportAuditLog)的 JPA Entity,並導入醫療系統必備的「軟刪除」與「樂觀鎖」防護機制。

核心概念
在醫療資訊系統(HIS)中,資料庫的設計有兩條不可跨越的紅線:

  1. 不能隨便 DELETE:
    病患資料若被誤刪會引發嚴重的醫療糾紛。因此我們採用「軟刪除(Soft Delete)」,也就是在資料庫加一個 deleted 欄位,刪除時只是把它標記為 true,而非真的從硬碟抹除。
  2. 完整的稽核追蹤 (Audit Tracking):
    一份健檢報告從「登記 -> 產出 -> 加密 -> 寄信」,每一個節點的成功或失敗都必須記錄下來,這是資安審查的護身符。

實作重點:Entity、Repository 與 Service 建置
Step 1:設定 application.yml 與 H2 資料庫
首先,到 src/main/resources 底下,把預設的 application.properties 重新命名為 application.yml(YAML 格式階層更清晰),並輸入程式碼,開啟 H2 資料庫的網頁版後台。
Step 2:建立 JPA Entity (資料表模型)
病患實體 (Patient.java)與稽核日誌實體 (ReportAuditLog.java)
Step 3:建立 Repository 與 Service
在 repository 資料夾下建立 PatientRepository 與 ReportAuditLogRepository 介面繼承 JpaRepository。
接著實作 PatientService.java,並採用現代 Spring Boot 推崇的建構子注入(Constructor Injection) 取代傳統的 @Autowired 欄位注入,最後同步更新 PatientController,呼叫 patientService.registerAndLog(patientDTO); 完成串接。

心得
初期習慣性使用 @Autowired 標註在欄位上,結果 VS Code 立刻給出 JAVA_CONSTRUCTOR_PARAMETER_INJECTION 警告。順勢重構為 final 加建構子的寫法,不僅消除了警告,也讓程式碼更符合業界規範。
在新增 Entity 加上 @Data 後,伺服器啟動時爆出 java.lang.ClassFormatError: Invalid method Code length 0。這是 VS Code 的 Java 語言伺服器與 Lombok 產生衝突導致生成的 .class 檔損壞。
我只好手動刪除專案根目錄的 target 資料夾,執行 Java: Clean Java Language Server Workspace,再透過 Maven clean compile 強制重新打包,成功讓伺服器復活!
伺服器啟動後,透過 Postman 發送合法的病患 JSON 格式,成功收到 200 OK 與「病患登記成功,資料已入庫!」訊息。
隨後打開瀏覽器前往 http://localhost:8080/h2-console ,使用設定好的 JDBC URL 登入。執行 SQL 查詢後,清楚看到資料成功落地,且 DELETED 欄位預設為 FALSE,VERSION 樂觀鎖為 0。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言