Я работаю над приложением, использующим встроенные механизмы аутентификации Oracle для управления учетными записями пользователей и паролями. Приложение также использует безопасность на уровне строк. В основном каждый пользователь, который регистрируется через приложение, получает имя пользователя и пароль Oracle вместо обычной записи в таблице «ПОЛЬЗОВАТЕЛИ». Пользователи также получают метки на определенных таблицах. Этот тип функциональности требует, чтобы выполнение операторов DML и DDL было объединено во многих случаях, но это создает проблему, поскольку операторы DDL выполняют неявные коммиты. Если ошибка возникла после выполнения инструкции DDL, управление транзакциями не откатит все. Например, когда новый пользователь регистрируется в системе следующих может иметь место:Тестирование модулей DDL-операторов, которые должны быть в транзакции
- Начало транзакции
- Вставьте персоны детали в таблицу. (т. е. имя, фамилия и т. д.) -DML
- Создать учетную запись oracle (создать пользовательский идентификатор пользователя, идентифицированный по паролю;) -DDL неявный фиксация. Транзакция заканчивается.
- Новая транзакция начинается.
- Выполните больше записей DML (вставки, обновления и т. Д.). происходит
- Ошибки транзакции только откат к шагу 4.
Я понимаю, что выше логика работает как задумана, но я нахожу, что это трудно модульное тестирование этого типа функциональности и управлять ею данных уровень доступа. У меня произошла сбой базы данных или возникли ошибки во время модульных тестов, которые привели к загрязнению тестовой схемы тестовыми данными, которые должны были быть отброшены. Достаточно легко стереть схему тестирования, когда это произойдет, но я беспокоюсь о сбоях базы данных в производственной среде. Я ищу стратегии для управления этим.
Это приложение Java/Spring. Spring предоставляет управление транзакциями.
создания учетной записи для пользователя требует добавления новых таблиц ..? –
Я бы настоятельно рекомендовал вам прочитать ответ cletus, а затем решите вместо этого использовать более традиционный подход с таблицей USERS ... –
@matt b. Нет, для создания учетных записей Oracle может потребоваться добавление меток в существующие таблицы, если вы используете функции безопасности на уровне строк Oracle. –