我正在研究使用Oracle的內置身份驗證機制來管理用戶帳戶和密碼的應用程序。該應用程序還使用行級安全性。基本上,通過應用程序註冊的每個用戶都會獲得Oracle用戶名和密碼,而不是「USERS」表中的典型條目。用戶還會在特定的表格上收到標籤。這種類型的功能要求在許多情況下將DML和DDL語句的執行結合起來,但這會造成問題,因爲DDL語句執行隱式提交。如果在執行DDL語句後發生錯誤,事務管理將不會將所有內容都回滾。例如,當一個新的用戶與系統註冊以下可能發生:單元測試需要在事務中的DDL語句
- 開始交易
- 插入人的細節到一個表。 (即名字,姓氏等)-DML
- 創建一個oracle賬戶(創建用戶testuser用密碼標識;)-DDL隱式提交。交易結束。
- 新交易開始。
- 執行更多的DML陳述(插入,更新等)。發生
- 錯誤,交易僅回滾到步驟4。
我明白,上述的邏輯是事先設計好的,但我難以尋找到單元測試這種類型的功能和數據管理它接入層。我在數據庫關閉或單元測試期間發生錯誤,導致測試模式被本應回退的測試數據所污染。在發生這種情況時很容易擦除測試模式,但我擔心生產環境中的數據庫故障。我正在尋找解決這個問題的策略。
這是一個Java/Spring應用程序。 Spring正在提供事務管理。
爲用戶創建一個帳戶需要添加新表..? – 2009-05-21 13:36:22
我強烈建議您閱讀cletus的答案,然後再決定使用USERS表的更傳統的方法... – 2009-05-21 13:42:40