Основы Hibernate в Java
Hibernate – это объектно-реляционное картографическое решение с открытым исходным кодом на Java. Он легкий и устраняет все недостатки, с которыми мы сталкиваемся при работе с JDBC.
Что такое Hibernate в Java?
Hibernate – это фреймворк на Java, который поставляется с уровнем абстракции и обрабатывает реализации внутри. Реализации включают в себя такие задачи, как написание запроса для операций CRUD или установление соединения с базами данных и т. д.
Фреймворк – это в основном программное обеспечение, которое обеспечивает абстракцию для нескольких технологий, таких как JDBC, сервлет и т. д.
Hibernate разрабатывает логику сохранения, которая хранит и обрабатывает данные для более длительного использования. Это легкий инструмент ORM и, что самое важное, с открытым исходным кодом, что дает ему преимущество перед другими фреймворками.
Что такое инструмент ORM?
Это метод, который отображает объект, хранящийся в базе данных. Инструмент ORM упрощает создание данных, манипулирование ими и доступ к ним. Для взаимодействия с базами данных он внутренне использует Java API.
Hibernate — немного теории
Давайте посмотрим на необходимость использования гибернации в Java.
Потребность в Hibernate Framework
Hibernate устраняет недостатки других технологий, таких как JDBC. Давайте посмотрим, как он оптимизирует задачи лучше, чем JDBC.
- Hibernate преодолевает зависимость базы данных, с которой сталкивается JDBC.
- Работа с JDBC требует больших затрат на изменение баз данных, спящий режим отлично справляется с этой проблемой.
- Переносимость кода невозможна при работе с JDBC, с которой легко справляется Hibernate режим.
- Hibernate укрепляет отношения на уровне объекта.
- Он преодолевает часть обработки исключений, которая является обязательной при работе с JDBC.
- Hibernate преодолевает отношения на уровне объекта.
Hibernate предоставляет оптимальные и эффективные решения для любой задачи, преодолевая все недостатки JDBC. Давайте посмотрим на различные операции, а также на технологии и базы данных, с которыми мы можем работать.
Введение
Фреймворк с открытым исходным кодом доступен для всех бесплатно. Исходный код для гибернации можно найти в Интернете, что также позволяет вносить изменения.
В преимуществе легкости каркаса можно увидеть значительно меньший пакет для установки. Эффективность увеличивается, если для выполнения не используются никакие контейнеры. Хотя спящий режим может работать с несколькими технологиями одновременно, это не означает, что спящий режим не может работать в одиночку. Мы можем работать и с гибернацией в одиночку, т.е. без каких-либо технологий.
Hibernate имеет особую природу, в которой не требуется реализовывать интерфейсы API спящего режима или расширять классы API.
Что такое JDBC? Что такое ORM, Hibernate & JPA?
Функции, поддерживаемые Hibernate
- Hibernate использует язык запросов Hibernate, что делает его независимым от базы данных.
- Он поддерживает автоматические операции DDL.
- Hibernate поддерживает автоматическую генерацию первичного ключа.
- Поддерживает кэш-память.
- Для гибернации обработка исключений не является обязательной.
- Наиболее важным является спящий режим – это инструмент ORM.
Ниже приведены базы данных, поддерживаемые спящим режимом в Java.
- Ядро СУБД HSQL
- MYSQL
- ORACLE
- FrontBase
- PostgreSQL
- DB2 / NT
- Sybase SQL Server
- Informix Dynamic Server
- База данных Microsoft SQL Server
Hibernate почти поддерживает все основные СУБД, что делает его эффективным и простым в работе.
Технологии, поддерживаемые Hibernate
Hibernate поддерживает множество технологий.
- XDoclet
- Maven
- Плагины Eclipse
- J2EE
Давайте рассмотрим несколько преимуществ гибернации в java.
Преимущества
- Легкий и открытый исходный код.
- Повышенная производительность – использование кэш-памяти помогает повысить производительность.
- Независимость базы данных – независимость от базы данных дает ему возможность работать с разными базами данных.
- Auto DDL Operations – автоматическое создание таблиц избавляет нас от ручного создания таблиц.
- Заботится о сопоставлении баз данных классов Java с использованием файлов XML без написания кода.
- Мы можем напрямую хранить и извлекать данные прямо из базы данных с помощью простых API.
- Для работы не требуется сервер приложений.
- Минимизирует доступ к базе данных с помощью интеллектуальных стратегий выборки.
- Обеспечивает простой запрос данных.
Источник: java-blog.ru
Hibernate что это за программа
Сам материал хорош, но инструкции, код, файлы, вид программы стоило более детально выложить. Пытаюсь повторить получаю море нерешаемых ошибок. Пойду искать другие уроки в интернете.
Nurs Уровень 20
27 января 2022
Все работает отлично, спасибо Вам большое, благодаря вам заработало первое приложение с Хибернейтом! Все очень доступно объяснили! Можете еще так же со Спрингом и Хибернейтом плииз
Andrey Уровень 51
14 декабря 2021
Bulkin Уровень 40
5 декабря 2021
dependencies in pom.xml:
org.postgresql postgresql 42.3.1 org.hibernate hibernate-core 5.6.1.Final
hibernate.cfg.xml надо создавать в папке ‘src/main/resources’ вот его configuration:
org.postgresql.Driver jdbc:postgresql://localhost:5432/postgres postgres password true org.hibernate.dialect.PostgreSQL95Dialect
4 декабря 2021
Какой код в default указан?
Кирилл Уровень 41
17 ноября 2021
31 октября 2021
А на какой строке кода класса Main добавляются записи в autos? Я в точности скопировал код, в users все добавилось, а вот autos так и осталось пустая, хотя физически эти 2 объекта создаются (проверял выводом в консоль).
Александр Уровень 19
22 октября 2021
Алексей Царегородцев Уровень 22
24 августа 2021
Вопрос автору, если он еще читает комменты 🙂 Вы используете Session. В доке в Hibernate + JPA примеры даются с EntityManager. В реальных проектах что используют? Session или EntityManager?
Источник: javarush.com
Управление гибернацией с помощью утилиты Hibernate
Гибернация – один из режимов энергосбережения Windows – актуален в большей степени для ноутбуков. В него спящая операционная система переходит, если пользователь не пробуждает устройство обычно более 3-х часов. Для стационарных компьютеров гибернация непосредственно как режим энергосбережения массово не несёт практической пользы, спящий режим для ПК эффективнее, но она является базисом технологии быстрого запуска, применяемой начиная с Windows 10.
При этом гибернация является активным пожирателем места на диске С.
Взять под контроль эту системную функцию можно с помощью бесплатной утилиты Hibernate.
Что за утилита такая?
Для управления гибернацией в Windows нет юзабилити-функционала, а файл этой системной функции — hiberfil.sys — скрыт как защищённый системный. И может быть доступен нам для обозрения только при настройках отображения скрытых и защищённых системных элементов в проводнике.
Аппетиты этого файла велики: он занимает от 3 Гб места на диске, и его размер в отдельных случаях может переваливать за 10 Гб.
Чтобы избавиться от этого файла, гибернацию как системную функцию необходимо отключить.
Включается и отключается она с помощью командной строки. И с помощью последней можно при необходимости сжимать размер файла гибернации, если он занимает на диске слишком много места.
Но разработчики проекта Sordum , занимающиеся созданием упрощённых инструментов администрирования Windows, предлагают нам для управления гибернацией более простое юзабильное решение — бесплатную утилиту Hibernate.
В окошке утилиты нам предлагается кнопка отключения гибернации.
А при необходимости включения этой системной функции в окошке утилиты можем воспользоваться кнопкой включения гибернации.
Утилита отображает текущий размер файла hiberfil.sys и может установить иной его размер. Минимальный.
Но в большинстве случаев более интересной возможностью утилиты Hibernate будет установка уменьшенного размера файла hiberfil.sys . Это сжатие вдвое минимального размера.
Установка уменьшенного размера высвобождает место на диске С, оставляя файл hiberfil.sys с минимально возможным объёмом. И тем самым оставляет нам возможность использования функции быстрого запуска, от которой нам придётся отказаться в случае отключения гибернации.
Скачать утилиту Hibernate можно на её сайте:
Источник: www.white-windows.ru
Пример использования Hibernate
Hibernate — библиотека предназначенная для решения задач объектно-реляционного отображения. Она представляет собой свободное программное обеспечение с открытым исходным кодом (open source), распространяемое на условиях GNU Lesser General Public License. Данная библиотека предоставляет легкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в традиционные реляционные базы данных. Другими словами, используя данную библиотеку, можно заметно упростить себе жизнь, так как у нас появляется возможность эффективно и легко взаимодействовать с базами данных, не обладая глубокими знаниями SQL. Как использовать Hibernate я расскажу в этой статье.
В качестве примера мы с вами разработаем простой телефонный справочник, который будет хранить список контактов в базе данных (PostgreSQL), при этом у каждого контакта будет ещё список телефонных номеров.
Создайте Maven-проект в любой удобной для вас IDE, лично я предпочитаю Idea IntelliJ, или же можно сгенерировать проект с помощью Maven командой:
mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes
-DgroupId=tz.com
-DartifactId=phone-book
После того как проект создан, откройте файл pom.xml и отредактируйте его чтобы он выглядел так:
4.0.0 tz.com phone-book 1.0-SNAPSHOT jar 4.3.6.Final 4.1.1.RELEASE 9.1-901-1.jdbc4 org.hibernate hibernate-core $ org.hibernate hibernate-entitymanager $ org.springframework spring-context $ org.springframework spring-tx $ org.springframework spring-orm $ postgresql postgresql $ $/src/main/resources org.codehaus.mojo exec-maven-plugin 1.3.2 phone.book.main.Main org.apache.maven.plugins maven-jar-plugin 2.4 true lib/ phone.book.main.Main org.apache.felix maven-bundle-plugin true 2.3.7 $ org.springframework.orm, org.springframework.context, javax.persistence, org.hibernate, * org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.7 1.7
В блоке у нас идёт список зависимостей для нашего проекта. В него я включил библиотеки для работы с Hibernate и Spring, а так же библиотеку для работы с базой данных PostgreSQL.
Так же хочу обратить внимание на exec-maven-plugin. Он позволяет запускать наш проект средствами Maven, что будет для нас крайне полезно. Для этого в директории проекта достаточно выполнить команду:
mvn exec:java
Обратите внимание что мы сделали ссылку на main-класс для exec-maven-plugin, который пока что не создали:
phone.book.main.Main
phone.book.model.Person phone.book.model.Phone org.hibernate.dialect.PostgreSQLDialect thread false update
В beans.xml мы сконфигурировали DataSource, который содержит всю необходимую информацию для подключения к базе данных: класс JDBC-драйвера (в данном случае драйвер для PostgreSQL), URL, логин и пароль.
Затем мы создаём бин hibernateSessionFactory, используя класс LocalSessionFactoryBean из библиотеки Spring ORM. Этот класс позволяет нам сконфигурировать все настройки Hibernate в спринге, и инициализирует класс SessionFactory, с помощью которого осуществляется взаимодействие с базой данных.
Для бина hibernateSessionFactory мы задаём параметры, которые используются для инициализации SessionFactory:
- DataSource, без которого мы не сможем установить подключение к базе данных.
- Классы-сущности Hibernate, в параметре «annotatedClasses». Они представляют собой описание структуры таблиц базы данных в виде объекта. Эти классы мы скоро создадим.
- Настройки Hibernate в параметре «hibernateProperties». Тут 2 очень важных момента, а именно это SQLDialect (в данном случае PostrgeSQLDialect), который должен быть выбран или определён в соответствии с той базой данных, которую мы планируем использовать, и параметр «hibernate.hbm2ddl.auto» который определяет может ли Hibernate создавать таблицы или редактировать их структуру, если их нет или они отличаются о того что описано в классах-сущностях. У нас параметр «hibernate.hbm2ddl.auto» имеет значение «update», то есть в случае отсутствия необходимых таблиц в базе данных Hibernate их создаст.
Последним шагом мы конфигурируем в спринге класс PersonDaoImpl и передаём ему объект SessionFactory в качестве параметра.
Теперь в каталоге /src/main/java создайте пакет phone.book.dao и поместите туда интерфейс и класс, что описаны ниже:
Интерфейс PersonDao.java:
package phone.book.dao; import phone.book.model.Person; import java.util.List; public interface PersonDao < public void save(Person p); public ListgetPersonList(); >
Класс PersonDaoImpl.java:
Класс PersonDaoImpl умеет всего 2 вещи: сохранять объект Person в базу данных и получать из базы данных все сохранённые объекты Person. Класс Person описывает структуру таблицы PERSON из нашей базы данных. Забегая вперёд, скажу что у нас ещё будет таблица PHONES. Давайте создадим классы для этих таблиц в пакете phone.book.model
Класс Person.java:
У нас всё готово для работы с базой данных, теперь осталось написать класс, который будет использовать всё что у нас уже есть. Создайте пакет phone.book.main и поместите туда главный класс для нашего приложения:
package phone.book.main; import phone.book.dao.PersonDao; import phone.book.model.Person; import org.springframework.context.support.ClassPathXmlApplicationContext; import phone.book.model.Phone; import java.util.ArrayList; import java.util.List; public class Main < public static void main(String[] args) < ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(«META-INF/spring/beans.xml»); PersonDao personDAO = context.getBean(PersonDao.class); ArrayListpersonArrayList = new ArrayList(); personArrayList.add(new Phone(«89200868942»)); Person person = new Person(«alexey», personArrayList); personDAO.save(person); System.out.println(«Person::»+person); List list = personDAO.getPersonList(); for(Person p : list) < System.out.println(«Person List::»+p); >//close resources context.close(); > >
Тут всё довольно просто: мы получаем контекст спринга с помощью ClassPathXmlApplicationContext, достаём из контекста наш ДАО, инициализируем классы сущности с константными значениями и сохраняем информацию из этих классов в базе данных. Затем выводим на экран все контакты, которые сохранены в базе данных.
На всякий случай выкладываю скриншот с общей структурой нашего проекта:
Чтобы увидеть результат работы, соберите проект с помощью команды:
mvn install
И запустите приложение с помощью команды:
Источник: akutepov.ru