Я згоден з @Timo. Єдине інше розуміння, яке я хотів би додати / розширити, - це те, що ORM має іншу семантику від чистого доступу до sql до ваших даних.
Суть ORM полягає в тому, щоб максимально абстрагувати той факт, що ваші дані взагалі знаходяться в БД. Коли ви використовуєте ORM належним чином, усі операції персистенції виконуються в один (сподіваємось) тонкий шар. Об'єкти вашої моделі матимуть мало або взагалі не матимуть коду стійкості; той факт, що ви використовуєте ORM, повинен бути невидимим для вашої моделі.
Завдяки цьому ORM дуже добре полегшує вам життя для певних типів операцій, а саме простих CRUD-операцій. Ви можете завантажувати свої об’єкти моделі, представляти їх, оновлювати, видаляти досить легко. Це полегшує вам життя, тому що коли ви отримуєте доступ до своїх даних, ви повертаєте об'єкти моделі, на яких ви можете писати ділову логіку. Якщо ви використовуєте JDBC, вам доведеться "гідратувати" екземпляри об'єктів з даних, які можуть бути складними та схильними до помилок.
ORM - не завжди найкращий вибір. JPA - це інструмент для роботи, якщо інструменту недостатньо для роботи, ви захочете знайти кращий інструмент. Наприклад, у мене був сценарій, коли мені довелося скопіювати весь графік об’єкта та зберегти нову копію цих об’єктів. Якщо я використовував ORM (як я намагався це зробити), мені довелося завантажити всі об'єкти з БД, скопіювати їх, а потім зберегти нові об'єкти. Я зайняв занадто багато часу.
Кращим рішенням було просто використовувати операції, засновані на jdbc, і "вставити через вибір" виклики sql для створення нових рядків. Це було швидко, код був простішим.
Інша річ, яку слід врахувати, це те, що вам комфортно з JDBC і у вас є терміни, вам не доведеться стрибати на перемогу ORM. Класи Spring JdbcTemplate надзвичайно потужні та корисні. Іноді найкращим інструментом для роботи є той, який ви знаєте. Вам слід ознайомитися з ORM, але не обов’язково для проекту з високими очікуваннями. Тут можна багато чому навчитися, і це не тривіально - насправді ви торгуєте одним набором складностей з іншим, вибираючи використовувати jdbc vs orm.