Я использую Spring в своем веб-приложении с базой данных в качестве Sybase.
У меня есть 3 сложные хранимые процедуры, которые нужно выполнить.
У процедур есть команды create table и drop table для хранения временных наборов результатов.
Таблицы создаются в пользовательском пространстве БД, а не в пространстве tempdb. Следовательно, я столкнулся с необходимостью сериализации всей операции службы из служебного компонента, которая будет иметь объекты DAO, вызывающие хранимые процессы. Означает ли простое превращение метода bean-компонента в сервис Spring Transaction решение проблем, связанных с параллелизмом в моем случае?
Еще одна вещь, которую я заметил, это то, что, пометив мой метод службы как @Transactional, заставил базу данных sybase выдать ошибку: «Невозможно выполнить команду создания таблицы в транзакции». Означает ли это, что Spring делает всю операцию с базой данных транзакцией?
Мне действительно не ясно об этом, и любое объяснение будет приветствоваться.
То есть, если у меня есть сохраненный процесс с именем myproc . Оператор sybase будет exec myproc . Это, скажем, выполняется DAOobject из метода сервиса, аннотируемого как @Transactional. Теперь Spring выполняет операцию базы данных как " begin trans
exec myproc
end tran". Мое наблюдение, кажется, предполагает это. Пожалуйста, объясните.
А также объясните, если только аннотация @Transactional решит мои проблемы с параллелизмом. Я на самом деле не хочу, чтобы 2 экземпляра моего хранимого процесса работали в базе данных одновременно.