Как работает JDBC и ORM?
Прочитал достаточно много информации про JDBC и ORM, теперь хотел бы проверить свое понимание работы с БД в Java и задать пару вопросов касательно JDBC, JPA, ORM (Hibernate).
- JDBC это интерфейс для работы с sql запросами в java.
- ORM это тоже интерфейс который построен по спецификации JPA и у него есть несколько реализаций таких как Hibernate, EclipseLink и т.д. ORM работает по принципу мапинга объектов из Java к таблицам и их столбцам в БД, все это делает с помощью анатаций, а запросы ORM составляет сама
Как я понял что JDBC, что ORM делают одно и тоже разница лишь сложности и оптимизации для разных проектов, то есть иногда выгодно использовать JDBC, а иногда ORM.
Подскажите пожалуйста правильно ли я рассуждаю?
Ответы (2 шт):
Нет неправильно рассуждаете.
JDBC это базис - ORM это надстройка над JDBC.
JDBC это гвозди которыми можно сколотить скажем табуретку, а ORM это автоматический пистолет, которым забивают гвозди.
Программист, который пишет на JDBC похож на трудягу который забивает гвозди ручным молотком, медленно и упорно. Если вы используете ORM, то уже похожи на квалифицированного рабочего который забивает гвозди пневмопистолетом: быстро и надежно.
JDBC - это средство работы с БД из java. Hibernate (и jpa) - предназначен для отделения работы в java от работы в БД. При этом, программист работает в java, реализует бизнес-правила, а вопросы синхронизации с БД поручает Hibernate. Программист пишет на java, используя возвышенные абстракции ООП (в частности наследование), а hibernate, в соответствии с настройками и мапингом (который тоже может создать Hibernate) производит синхронизацию и подтягивание объектов по требованию. Предполагается, что программист не пишет запросов на select, insert, delete, update (хотя такая возможность и предусмотрена) и SpringData еще больше усиливает эту возможность. Например, программист в java запрашивает через hibernate объект по классу объекта и его id, изменяет поля этого объекта и после этого, запрашивает у hibernate синхронизацию этого объекта с БД. Hibernate сам понимает как написать select и как написать update. Hibernate - это реляционное хранение (объектов java) под идеоматику java.