Дайте мне посмотреть, правильно ли я это понимаю.Обычно мы должны стремиться поместить все операции, которые принадлежат одной «единице работы», в одну транзакцию, верно?Это помогает вернуть состояние БД в случае исключения где-то в цепочке операций.
Однако, в моем конкретном случае, у меня есть старый сервис, который не очень легко подключить к моему текущему коду.Поэтому я должен держать его работающим отдельно, и дать ему права на ту же базу данных, где мое текущее приложение хранит данные.
Проблема возникает, когда мне нужно вставить новый элемент в БД.Тогда я должен позвонить в службу.Если я сделаю это в рамках одной транзакции, служба начнет поиск записи в БД, прежде чем транзакция будет фактически зафиксирована.Таким образом, я начал использовать прослушиватели событий, а именно PostInsertEventListener и PostDeleteEventListener.
Теперь все работает нормально, поскольку транзакция фиксируется заранее, но это полностью нарушает мою архитектуру кода.Я построил серию сервисов, которые внедряются друг в друга, и теперь я должен объявить эти два класса слушателей.Думаю, лучшее, что я могу сделать, - это заставить мою службу координаторов реализовать эти два интерфейса слушателя, но таким образом я полностью связываю ее с Hibernate, верно?
В общем, действительно ли использование этих слушателей действительно правильнодля таких случаев, как мой?