JavaRush /Блог /Random /Hibernate для чайников. Обзор книги "Java Persistence API...
Джон Дориан
37 уровень

Hibernate для чайников. Обзор книги "Java Persistence API и Hibernate"

Статья из группы Random
Не секрет, что большинство технической литературы в мире написано на английском языке. И Java-разработка здесь не исключение - значительная часть материалов или вообще недоступна на русском, или переведена так, что лучше учить с помощью гугл-транслейта. Тем радостнее для всего русскоязычного Java-сообщества будет то, что самая известная книга на эту тему "Java Persistence API with Hibernate" - примерно полгода назад была переведена на русский язык.
Hibernate для чайников. Обзор книги
Если вы хотите стать Java-разработчиком - однажды вам придется учиться использовать Hibernate. Конечно, из любого правила есть исключения, все зависит от конкретного проекта и т.д. Но если смотреть на вашу карьеру в долгосрочной перспективе - в реальной работе вы с этой библиотекой непременно столкнетесь. Представленную в статье книгу без преувеличения можно назвать фундаментальной: она является основным путеводителем по Hibernate среди всего, что об этой технологии было написано. Это объясняется достаточно легко, ведь среди ее авторов - основатель проекта Hibernate Гэвин Кинг и член команды разработчиков Hibarnate Кристиан Бауэр. Лично для меня это сразу выступило своеобразным гарантом качества: кому уж хорошо шарить в технологии, как не ее создателям:) С другой стороны, далеко не всегда хороший специалист или даже создатель технологии могут написать легкую для понимания обучающую книгу. Как ни крути, а личный скилл и умение обучать друг с другом почти не коррелируют. В пример можно привести легендарное «Искусство программирования» Кнута или "Язык программирования С++" от его создателя Бьерна Страуструпа. И если высочайший уровень знаний авторов отрицать невозможно, то их книги читаются, мягко говоря, тяжеловато. К счастью, создатели Hibernate и авторы этой книги создали вполне удобоваримый с точки зрения начинающего программиста продукт. Для кого эта книга: Как и в большинстве подобных книг, в аннотации написано, что она "для всех", в том числе и тех, кто учит Hibernate с нуля. На деле все-таки лучше иметь некоторую предварительную подготовку в виде сопутствующих технологий. Ниже перечислен список того, что сильно облегчит Вам жизнь при чтении этой книги.
  1. Если вы не знаете, что такое реляционные базы данных, не можете создать таблицу или написать даже простой SELECT-запрос и т.д. - лучше все-таки начать именно с этого. Это, кстати, будет полезно для тех, кто планирует участвовать в стажировке JavaRush. Начинайте с SQL'a, Hibernate потом. Благо, по SQL написан отличный Head-First (на мой вкус, один из лучших HeadFirst'ов во всей серии).

  2. JDBC. Технология далеко не новая, но многие опытные разработчики по ряду до сих пор предпочитают ее хибернейту.

  3. После этого, неплохо было бы прочитать (хотя бы поверхностно) про то, что такое ORM и зачем она нужна. Ведь Hibernate - это прежде всего ORM, то есть штука, которая превращает Java-объекты в записи базы данных (и наоборот).

    К примеру, у вас есть класс User, есть класс Auto, и у каждого User'a есть список его машин List&ltAuto> autos.

    Как записать все это в базу данных, чтобы еще и связи между юзерами и их машинами сохранились? Ведь юзер один, а машин у него может быть много:/ А как автоматически удалить из базы данных все машины юзера, если мы удалили его самого (то есть запретить БД хранить "бесхозные" машины)? Вот Hibernate как раз и знает как:)

  4. Кроме того, в Java есть и собственная реализация ORM-модели - Java Persistence API, или просто JPA. В книге она также рассматривается, но лучше предварительно бегло пробежаться и по ней. Не нужно читать тонны литературы на тему: если вы будете знать, что такое POJO, Entity, и какие требования предъявляются к Entity - будет уже неплохо.

  5. Если вы не знакомы с форматом XML - самое время познакомиться с ним перед прочтением книги. Очень часто конфиг-файлы Hibernate (как и Spring), пишутся в XML-формате, и если он ввергает вас в ужас - читать книгу будет сложнее.

  6. Если вы знакомы с паттернами проектирования (хотя бы по задачам JavaRush), то можно почитать про паттерн DAO и зачем он нужен. DAO очень легко реализуется при помощи Hibernate. Участники стажировки, кстати, будут создавать "даошки" при написании тестового задания (и на самом проекте тоже). Да и в реальной работе их создание - рутинная задача, поэтому лишним это не будет.

Предварительное знакомство со всем вышеперечисленным сильно упростит вашу учебу (да и в работе это, что называется, must-have). В заключение - небольшое ИМХО о преимуществах и недостатках книги. Плюсы:
  • Вполне хороший перевод с английского. Про важность этого пункта, думаю, писать отдельно не стоит. Конечно, оригинал всегда будет лучше, и если вы знаете английский на достаточном уровне - лучше читать именно его. Однако, для тех, кто с английским пока не в ладах, а останавливать из-за этого учебу не хочет - вариант отличный.

  • Очень широкое покрытие тем. Рассказано почти обо всех "внутренностях" библиотеки. О чем-то очень подробно, о чем-то более скупо. Но в целом, охват получился весьма приличный.

  • Простой и понятный язык.

Из минусов могу выделить разве что примеры. На мой взгляд, они могли бы быть проще и лаконичнее. Да и учитывая объем свалившейся на читателя новой информации, начинающему может быть тяжело хотя бы просто скомпилировать и заставить работать все это дело. Не говоря уж о том, чтобы понять, что там в коде происходит. От себя могу порекомендовать - плюньте на клонирование примеров с гитхаба, и набирайте их своими руками. И руку набьете, и понимание будет намного лучше. А еще лучше - после прочтения очередной главы придумайте и реализуйте какую-нибудь задачу сами. Это будет намного продуктивнее, даже если задачка будет совсем простой. Стоит ли покупать книгу? Однозначно да. Тем более, что ее бумажный тираж - всего 200 экземпляров:) На основе материалов этой книги я достаточно легко написал свою первую статью на Хабрахабре. А администрации JavaRush, на мой взгляд, однозначно стоит добавить ее в список призов своего конкурса:) Спасибо за внимание, и успехов в обучении!
Комментарии (16)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
null Уровень 2
18 июля 2022
Сорян за некропостинг, но увидел случайно и припекло. "Стоит ли покупать книгу? Однозначно да." Однозначно - нет. За некоторым исключением. Да, как справочник она хороша и иметь ее в личной библиотеке - правильно. Но она совершенно не подойдет как первый источник знаний по гибернейту и категорически противопоказана джунам. Эту книгу тяжело читать даже более опытному разработчику, который уже щупал гибернейт и что-то знает про JPA, знает как писать запросы и их оптимизировать, как работать с сессией и т.п. Это примерно как учить яву по официальной документации. Она написана махровым техническим слогом, в сравнении с которым даже Шилдт покажется бульварным чтивом. Java Persistance with Hibernate, это Hibernate in Action на стероидах - та же книга, но раздутая до 600+ (изначально - менее 400 крупным шрифтом) страниц из которых полезной нагрузки, если вы не конструируете БД под серьезный энтерпрайз, будет ~20%. А даже если и будет, то часть информации безбожно устарела и в таком виде вы ее найдете мало где. Если хочется именно книгу, то лучше начинать с Beginning Hibernate: Java Persistence from Beginner to Pro, сейчас (2022) это 6 издание, но 5 найти проще. Также, отличным вариантом для начинающего будет Just Hibernate. И, конечно, Spring Persistence With Hibernate. Оно все на английском. И уже потом, можно попробовать читать Java Persistance with Hibernate, но вряд ли оно уже будет нужно.
Kunonuk Уровень 17
27 декабря 2021
Введение в заблуждение в третьем пункте... К примеру, у вас есть класс User, есть класс Auto, и у каждого User'a есть список его машин List&ltAuto> autos. Как записать все это в базу данных, чтобы еще и связи между юзерами и их машинами сохранились? Ведь юзер один, а машин у него может быть много:/ А как автоматически удалить из базы данных все машины юзера, если мы удалили его самого (то есть запретить БД хранить "бесхозные" машины)? Вот Hibernate как раз и знает как:) Это и база данных знает как сделать.. Точнее все кроется во внешних ключах. FOREIGN KEY (auto_id) REFERENCES Auto(id) ON DELETE CASCADE FOREIGN KEY (user_id) REFERENCES User(id) ON DELETE CASCADE и при удалении машины или юзера , база данных автоматически удаляет запись.. работает на большинстве диалектов - mysql, postgresql и тд
5 ноября 2018
200 экземпляров всего было выпущено в 2017 году. Видимо, успех, т.к. в 2018-м вышло переиздание. Для сравнения, издание 2017 года https://www.ozon.ru/context/detail/id/141415731/ и 2018-го https://www.ozon.ru/context/detail/id/147137095/ Это разные издания - по ISBN (уникальный для всей планеты идентификатор книги)
Евгений Уровень 16
28 сентября 2018
Можно купить здесь - https://www.manning.com/books/java-persistence-with-hibernate-second-edition Конкретно я нашел промокод и купил книжку за те же 24$, что она продается в ритейле, ну на английском и только электронный вариант (меня больше устраивает с собой устройства таскать, чем довольно толстую книжку)
Fonzy Уровень 40
19 июля 2018
Стоит ли покупать книгу? Однозначно да. Тем более, что ее бумажный тираж - всего 200 экземпляров:) Я надеюсь все-таки 200 тыс экземпляров?)
Andrew Shtramak Уровень 40
18 апреля 2018
Кроме того, в Java есть и собственная реализация ORM-модели - Java Persistence API, или просто JPA. Так совсем неправильно писать... JPA - это спецификации JEE, а Hibernate - одна из ее реализаций, хотя, если точнее быть, то JPA писалось с Hibernate. Главное такое на собесе не ляпнуть
Виктор Уровень 30
15 апреля 2018
С примерами действительно беда, ни фига не понятно что и как компилировать...
Максим Уровень 40 Expert
19 февраля 2018
Спасибо за ссылки. Надо будет ознакомиться. Хотя, пожалуй, самое сложное в обучении это как раз таки объемы нового материала. Столько всего надо изучить, прям не знаешь за что хвататься. Голова кругом идет.
Anonymous #1193138 Уровень 40
19 февраля 2018
А где скачать то можно?
Стас Пасинков Уровень 26 Master
19 февраля 2018
а что делать если я неплохо знаком с XML, но он все-равно ввергает меня в ужас?))) абзац про то, что примеры надо ручками набирать и потом еще самому себе задачку придумать аналогичную - поддерживаю всеми руками и ногами!))