Нет ответов да / нет на эти вопросы. Хотел бы предложить эту ссылку для вашего анализа: Spring-JDB C -JPA против Hibernate
Это касается анализа того, может ли реляционная модель быть представлена в ОО-модели, если вы используя ORM как Hibernate, не вызывая сложности. Если реляционная модель является сложной, рекомендуется использовать Spring JDB C с собственным SQL. Spring JDB C решает такие проблемы, как открытие / закрытие соединений DB, обработка исключений и т. Д. c., Которые вы должны решить в простом старом мире JDB C.
Если вам нужен контроль над SQL, поскольку вы упомянули сложные объединения, лучше написать нативный SQL. Если вы действительно уверены, что реляционная модель правильно переведена в надежную ОО-модель, и вы уверены, что SQL-запросы, сгенерированные hibernate, оптимизированы на основе ваших сопоставлений с внешним ключом, тогда go для hibernate. Конечно, в Hibernate есть много удобных функций, которые не были бы доступны в других ORM. Опять же, речь идет о том, где вы хотите переместить элемент управления разработчику или фреймворку. Это мои скромные предложения.
Пожалуйста, исправьте, если я что-то упустил.
Я не работал над JPA, поэтому другие эксперты-разработчики могут прокомментировать это.