Что именно делает HIbernate, если он использует сам JDBC - PullRequest
0 голосов
/ 08 апреля 2019

Я новичок в Hibernate и, изучая его, я наткнулся на идею, что он использует JDBC за кулисами.Если это так, то в чем именно заключается гибернация?Я знаю о его преимуществах, таких как функции HQL, annotations, ORM и т. Д. Так что же за кадром всегда работает JDBC, который работает?Каковы отдельные обязанности JDBC и HIbernate?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019
  • Hibernate делает слой ORM
    • сопоставление объектов с инструкциями SQL
    • сопоставление результатов запроса SQL (в виде ResultSet s) с объектами
  • JDBC выполняет подключение к базе данных
    • отправляя операторы SQL в базу данных
    • , считывая результаты запроса как ResultSet s
  • база данных
    • выполняет операторы SQL для обновления данных
    • выполняет операторы SQL для запроса данных
    • управляет данными и индексами

Важно отметить, что разные базы данных (MySQL, Oracle, MSSQL, Postgres, H2, HSQLDB, Apache DB) имеют разные реализации драйверов и, следовательно, нуждаются в разных драйверах JDBC.Без использования JDBC Hibernate сам должен был бы реализовать эти драйверы.

0 голосов
/ 08 апреля 2019

Какие преимущества это дает нам то, что мы должны искать.

1.) Cache Механизм: если ваше приложение использует много статических данных, то кэширование будет хорошим вариантом, а поддержка гибернации прозрачно.

2.) Управляющий sessions, transactions и т. Д.

3.) Сокращение усилий при написании запросов, больше утилит гибернации, таких как Query API, Criteria API, HQL

4.) Производительность разработчика. Производительность запросов, как правило, хуже, чем запросы с ручным кодированием, поскольку она не может быть оптимизирована для каждого конкретного случая. Hibernate очень хорошо компенсирует это за счет использования кэшей.

5.) Изменения базы данных: если вы измените базу данных, например, измените Mysql на Oracle, и если вы используете Hibernate, вам не придется изменять какой-либо код реализации. Но если вы используете необработанный JDBC и необработанный запрос вместо JPA или HQL, вам придется изменить гораздо больше запросов. Поскольку необработанный запрос может меняться в зависимости от реализации поставщика базы данных.

Hibernate - действительно огромное решение с сохранением данных и ORM, включая реализацию JPA. Кроме того, существует множество способов управления сущностями в Hibernate, сохранения, транзакций и т. Д. В hibernate вы можете использовать аннотации SQL, HQL или Java. Шаблон JDBC - это простой инструмент, который помогает вам управлять запросами и транзакциями SQL. Вероятно, его лучше описать как оболочку или помощник JDBC. Если вы предпочитаете управлять запросами к базе данных (SQL) самостоятельно или если вы новичок, использование Spring JdbcTemplate поможет вам понять, как это работает. Даже если вы работаете над большим приложением, подумайте об использовании Hibernate. Просто будьте осторожны с кривой обучения Hibernate.

В целом, если вы работаете в относительно небольшом проекте, вы также можете использовать JDBC, но в проектах среднего и крупного размера всегда полезно использовать какое-либо решение ORM, не обязательно Hibernate. Также для большого проекта мы используем пул соединений для получения соединения из базы данных. Есть гораздо больше библиотек пула подключений, таких как c3p0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...