Распространение транзакций и синхронизация контекста постоянства с хранимыми процедурами Oracle - PullRequest
0 голосов
/ 12 марта 2012

Я искал возможность распространения транзакции JTA из кода Java в хранимые процедуры Oracle и не нашел ничего действительно значимого. Я спрашиваю об этом, потому что коллега работает с этим и сказал мне, что это работает для него.

Что меня интересует, так это ситуация, когда некоторые операции не были сброшены, поскольку транзакция все еще открыта и впоследствии вызывается хранимая процедура (эта процедура не контролирует свою собственную транзакцию), сможет ли хранимая процедура увидеть нерешенную операцию в контексте постоянства? Другими словами, будет ли контекст постоянства каким-либо образом синхронизироваться с транзакционной памятью нижней базы данных?

Я готовлюсь к экзамену Oracle JPA, и это не описано в книге, которую я читаю. Однако на некоторых веб-сайтах я читал, что гуглил, и люди говорят, что такое распространение транзакций работает, потому что есть интеграция между JTA и транзакциями базы данных в определенных драйверах JDBC (я просто не могу представить, как это могло бы работать, осведомлен менеджер транзакций транзакций базы данных ??).

Заранее спасибо!

1 Ответ

2 голосов
/ 12 марта 2012

Я сделал то же самое, используя Spring + Hibernate и самодельный фреймворк + Hibernate.Я считаю, что то же самое будет работать с JPA.

Если вы вызываете своего SP внутри той же транзакции, что и JPA, все идет хорошо, единственная проблема - это то, что вы упомянули, поэтому просто позвоните flush() наваш persistenceManager перед вызовом SP, и изменения, внесенные вами в ваши сущности, будут записаны в DB в контексте транзакции.

...