Пользователь Джон Дориан
Джон Дориан
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, на мой взгляд, однозначно стоит добавить ее в список призов своего конкурса:) Спасибо за внимание, и успехов в обучении!
Комментарии (13)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
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 уровень, Magnitogorsk
19 февраля 2018
А где скачать то можно?
Стас Пасинков 26 уровень, Киев Master
19 февраля 2018
а что делать если я неплохо знаком с XML, но он все-равно ввергает меня в ужас?))) абзац про то, что примеры надо ручками набирать и потом еще самому себе задачку придумать аналогичную - поддерживаю всеми руками и ногами!))