Я согласен с @Timo. Единственное, что я хотел бы добавить / расширить, заключается в том, что ORM имеет семантику, отличную от чистого доступа sql к вашим данным.
Смысл ORM в том, чтобы максимально абстрагироваться от того факта, что ваши данные вообще находятся в БД. При правильном использовании ORM все операции с сохранением выполняются на одном (надеюсь) тонком слое. В ваших модельных объектах практически не будет кода сохранения; тот факт, что вы используете ORM, должен быть невидимым для вашей модели.
Из-за этого ORM очень хорошо облегчает вашу жизнь для определенных типов операций, а именно простых операций CRUD. Вы можете легко загрузить объекты модели, представить их, обновить и удалить. Это облегчает вашу жизнь, потому что, когда вы получаете доступ к своим данным, вы получаете обратно объекты модели, на которых вы можете писать бизнес-логику. Если вы используете JDBC, вам придется «гидратировать» экземпляры объектов из данных, что может быть сложным и подверженным ошибкам.
ORM - не всегда лучший выбор. JPA - это инструмент для работы, если этого инструмента недостаточно для работы, вы захотите найти лучший инструмент. Например, у меня был сценарий, в котором мне нужно было скопировать весь граф объекта и сохранить новую копию этих объектов. Если бы я использовал ORM (как я пытался это сделать), мне пришлось бы загрузить все объекты из БД, затем скопировать их, а затем сохранить новые объекты. Я потратил слишком много времени.
Лучшим решением было просто использовать операции на основе jdbc и вызовы sql «вставить через выбор» для создания новых строк. Это было быстро, код был проще.
Еще одна вещь, которую следует учитывать, это то, что вам комфортно с JDBC, и у вас есть крайние сроки, вам не нужно прыгать на подножку ORM. Классы Spring JdbcTemplate чрезвычайно эффективны и полезны. Иногда лучший инструмент для работы - тот, который вы знаете. Вам следует ознакомиться с ORM, но не обязательно для проекта с высокими ожиданиями. Есть чему поучиться, и это нетривиально - на самом деле вы торгуете одним набором сложностей с другим, выбирая jdbc против orm.