小编典典

单元测试需要在事务中的DDL语句

java

我正在开发一个使用Oracle内置身份验证机制来管理用户帐户和密码的应用程序。该应用程序还使用行级安全性。基本上,每个通过应用程序注册的用户都将获得Oracle用户名和密码,而不是“
USERS”表中的典型条目。用户还会在某些表上收到标签。这种类型的功能要求在许多情况下都将DML和DDL语句的执行结合起来,但这会带来问题,因为DDL语句执行隐式提交。如果在执行DDL语句后发生错误,则事务管理将不会回滚所有内容。例如,当新用户向系统注册时,可能会发生以下情况:

  1. 开始交易
  2. 将人员详细信息插入表中。(即名字,姓氏等)-DML
  3. 创建一个oracle帐户(创建由密码标识的用户testuser;)-DDL隐式提交。交易结束。
  4. 新交易开始。
  5. 执行更多DML语句(插入,更新等)。
  6. 发生错误,事务仅回滚到步骤4。

我了解上述逻辑按设计工作,但是我发现很难对这种类型的功能进行单元测试并在数据访问层中对其进行管理。我的数据库出现故障,或者在单元测试期间发生错误,这些错误导致测试架构被应该回滚的测试数据污染。发生这种情况时,擦除测试架构很容易,但是我担心生产环境中的数据库故障。我正在寻找管理该问题的策略。

这是一个Java / Spring应用程序。Spring正在提供事务管理。


阅读 222

收藏
2020-11-30

共1个答案

小编典典

您应该结合使用Oracle代理身份验证和行级安全性。

阅读此内容:http : //www.oracle.com/technology/pub/articles/dikmans-toplink-
security.html

2020-11-30