Когда использовать JDBC, а когда — Spring Data JPA?

Учитель мне задал вопрос, на который я не смог ответить. Когда использовать JDBC, а когда — Spring Data JPA?


Ответы (1 шт):

Автор решения: Roman C

Когда нужно делать сложные запросы к БД и не используется Spring Data JPA, то тогда надо использовать JDBC. В противном случае, если нет необходимости составлять сложные запросы, и используется Spring Data JPA, даже если и надо составлять такие запросы в Spring Data JPA, то использовать нативные запросы. JDBC представляет собой API для низкоуровневого доступа к БД, и по возможности следует избегать такого доступа, поскольку низкоуровневое программирование всегда сложнее, чем высокоуровневое, такое как Spring Data JPA.

Для более детального ознакомления и сравнения различий советую прочитать эту статью:

JDBC vs JPA:

JDBC. Абсолютно все библиотеки, взаимодействующие с базами данных, используют JDBC. В этом есть как преимущества, так и недостатки. По сути, JDBC — это Java-реализация стандартного подхода к работе с базами данных, реализованного во всех подобных технологиях:

  • Открыть соединение.

  • Открыть курсор.

  • Отправить запрос.

  • Обработать набор данных.

  • Закрыть результирующий набор / курсор.

  • Закрыть соединение.

И вы наверняка сталкивались с ситуацией, когда, выполняя десятки запросов, забывали закрыть соединение. А шесть недель спустя получали ужасный стек-трейс из-за того, что каким-то образом в базе данных закончились соединения или курсоры.

Вы быстро понимали в чем дело, чинили и отправляли в релиз. Но через восемь недель — та же самая ошибка.

Spring Data JPA помогает вам с простыми запросами и избавляет от необходимости работать с EntityManager из JPA.

Хотя рано или поздно вам все-равно придется писать JPQL-запросы вручную.

Но если вы думаете, что написав, сложный и тонко настроенный JPQL-запрос вы сможете каким-то образом настроить генерацию оптимального SQL-запроса, вас ждет большое разочарование.

→ Ссылка