Да, я бы сказал, что лучший запасной вариант - это необработанные функции jdbc или даже функции Oracle PL / SQL (или их эквиваленты).
Конечно, гораздо проще понять специальный вызов необработанного jdbc, чем некоторые очень сложные java.код для расширения Hibernate.
Я работал над проектом, в котором «Архитектор» использовал множество пользовательских аннотаций и модифицировал Hibernate, чтобы поддержать его идею «идеального» ORM ... В конечном итоге он был уволен и всехлам убрали, потому что никто другой не смог заставить его работать.