Не секрет, что большинство технической литературы в мире написано на английском языке. И Java-разработка здесь не исключение - значительная часть материалов или вообще недоступна на русском, или переведена так, что лучше учить с помощью гугл-транслейта. Тем радостнее для всего русскоязычного Java-сообщества будет то, что самая известная книга на эту тему "Java Persistence API with Hibernate" - примерно полгода назад была переведена на русский язык.
Если вы хотите стать Java-разработчиком - однажды вам придется учиться использовать Hibernate.
Конечно, из любого правила есть исключения, все зависит от конкретного проекта и т.д. Но если смотреть на вашу карьеру в долгосрочной перспективе - в реальной работе вы с этой библиотекой непременно столкнетесь.
Представленную в статье книгу без преувеличения можно назвать фундаментальной: она является основным путеводителем по Hibernate среди всего, что об этой технологии было написано. Это объясняется достаточно легко, ведь среди ее авторов - основатель проекта Hibernate Гэвин Кинг и член команды разработчиков Hibarnate Кристиан Бауэр. Лично для меня это сразу выступило своеобразным гарантом качества: кому уж хорошо шарить в технологии, как не ее создателям:)
С другой стороны, далеко не всегда хороший специалист или даже создатель технологии могут написать легкую для понимания обучающую книгу. Как ни крути, а личный скилл и умение обучать друг с другом почти не коррелируют. В пример можно привести легендарное «Искусство программирования» Кнута или "Язык программирования С++" от его создателя Бьерна Страуструпа. И если высочайший уровень знаний авторов отрицать невозможно, то их книги читаются, мягко говоря, тяжеловато.
К счастью, создатели Hibernate и авторы этой книги создали вполне удобоваримый с точки зрения начинающего программиста продукт.
Для кого эта книга:
Как и в большинстве подобных книг, в аннотации написано, что она "для всех", в том числе и тех, кто учит Hibernate с нуля. На деле все-таки лучше иметь некоторую предварительную подготовку в виде сопутствующих технологий.
Ниже перечислен список того, что сильно облегчит Вам жизнь при чтении этой книги.
Если вы не знаете, что такое реляционные базы данных, не можете создать таблицу или написать даже простой SELECT-запрос и т.д. - лучше все-таки начать именно с этого. Это, кстати, будет полезно для тех, кто планирует участвовать в стажировке JavaRush. Начинайте с SQL'a, Hibernate потом. Благо, по SQL написан отличный Head-First (на мой вкус, один из лучших HeadFirst'ов во всей серии).
JDBC. Технология далеко не новая, но многие опытные разработчики по ряду до сих пор предпочитают ее хибернейту.
После этого, неплохо было бы прочитать (хотя бы поверхностно) про то, что такое ORM и зачем она нужна. Ведь Hibernate - это прежде всего ORM, то есть штука, которая превращает Java-объекты в записи базы данных (и наоборот).
К примеру, у вас есть класс User, есть класс Auto, и у каждого User'a есть список его машин List<Auto> autos.
Как записать все это в базу данных, чтобы еще и связи между юзерами и их машинами сохранились? Ведь юзер один, а машин у него может быть много:/ А как автоматически удалить из базы данных все машины юзера, если мы удалили его самого (то есть запретить БД хранить "бесхозные" машины)?
Вот Hibernate как раз и знает как:)
Кроме того, в Java есть и собственная реализация ORM-модели - Java Persistence API, или просто JPA. В книге она также рассматривается, но лучше предварительно бегло пробежаться и по ней. Не нужно читать тонны литературы на тему: если вы будете знать, что такое POJO, Entity, и какие требования предъявляются к Entity - будет уже неплохо.
Если вы не знакомы с форматом XML - самое время познакомиться с ним перед прочтением книги. Очень часто конфиг-файлы Hibernate (как и Spring), пишутся в XML-формате, и если он ввергает вас в ужас - читать книгу будет сложнее.
Если вы знакомы с паттернами проектирования (хотя бы по задачам JavaRush), то можно почитать про паттерн DAO и зачем он нужен. DAO очень легко реализуется при помощи Hibernate. Участники стажировки, кстати, будут создавать "даошки" при написании тестового задания (и на самом проекте тоже). Да и в реальной работе их создание - рутинная задача, поэтому лишним это не будет.
Предварительное знакомство со всем вышеперечисленным сильно упростит вашу учебу (да и в работе это, что называется, must-have).
В заключение - небольшое ИМХО о преимуществах и недостатках книги.
Плюсы:
Вполне хороший перевод с английского. Про важность этого пункта, думаю, писать отдельно не стоит. Конечно, оригинал всегда будет лучше, и если вы знаете английский на достаточном уровне - лучше читать именно его. Однако, для тех, кто с английским пока не в ладах, а останавливать из-за этого учебу не хочет - вариант отличный.
Очень широкое покрытие тем. Рассказано почти обо всех "внутренностях" библиотеки. О чем-то очень подробно, о чем-то более скупо. Но в целом, охват получился весьма приличный.
Простой и понятный язык.
Из минусов могу выделить разве что примеры. На мой взгляд, они могли бы быть проще и лаконичнее. Да и учитывая объем свалившейся на читателя новой информации, начинающему может быть тяжело хотя бы просто скомпилировать и заставить работать все это дело. Не говоря уж о том, чтобы понять, что там в коде происходит. От себя могу порекомендовать - плюньте на клонирование примеров с гитхаба, и набирайте их своими руками. И руку набьете, и понимание будет намного лучше. А еще лучше - после прочтения очередной главы придумайте и реализуйте какую-нибудь задачу сами. Это будет намного продуктивнее, даже если задачка будет совсем простой.
Стоит ли покупать книгу? Однозначно да. Тем более, что ее бумажный тираж - всего 200 экземпляров:)
На основе материалов этой книги я достаточно легко написал свою первую статью на Хабрахабре.
А администрации JavaRush, на мой взгляд, однозначно стоит добавить ее в список призов своего конкурса:)
Спасибо за внимание, и успехов в обучении!
Сорян за некропостинг, но увидел случайно и припекло.
"Стоит ли покупать книгу? Однозначно да."
Однозначно - нет. За некоторым исключением.
Да, как справочник она хороша и иметь ее в личной библиотеке - правильно. Но она совершенно не подойдет как первый источник знаний по гибернейту и категорически противопоказана джунам. Эту книгу тяжело читать даже более опытному разработчику, который уже щупал гибернейт и что-то знает про 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, но вряд ли оно уже будет нужно.
Введение в заблуждение в третьем пункте...
К примеру, у вас есть класс User, есть класс Auto, и у каждого User'a есть список его машин List<Auto> autos.
Как записать все это в базу данных, чтобы еще и связи между юзерами и их машинами сохранились? Ведь юзер один, а машин у него может быть много:/ А как автоматически удалить из базы данных все машины юзера, если мы удалили его самого (то есть запретить БД хранить "бесхозные" машины)? Вот Hibernate как раз и знает как:)
Это и база данных знает как сделать.. Точнее все кроется во внешних ключах.
FOREIGN KEY (auto_id) REFERENCES Auto(id) ON DELETE CASCADE
FOREIGN KEY (user_id) REFERENCES User(id) ON DELETE CASCADE
и при удалении машины или юзера , база данных автоматически удаляет запись..
работает на большинстве диалектов - mysql, postgresql и тд
200 экземпляров всего было выпущено в 2017 году.
Видимо, успех, т.к. в 2018-м вышло переиздание.
Для сравнения, издание 2017 года
https://www.ozon.ru/context/detail/id/141415731/
и 2018-го
https://www.ozon.ru/context/detail/id/147137095/
Это разные издания - по ISBN (уникальный для всей планеты идентификатор книги)
Можно купить здесь - https://www.manning.com/books/java-persistence-with-hibernate-second-edition
Конкретно я нашел промокод и купил книжку за те же 24$, что она продается в ритейле, ну на английском и только электронный вариант (меня больше устраивает с собой устройства таскать, чем довольно толстую книжку)
Кроме того, в Java есть и собственная реализация ORM-модели - Java Persistence API, или просто JPA.
Так совсем неправильно писать...
JPA - это спецификации JEE, а Hibernate - одна из ее реализаций, хотя, если точнее быть, то JPA писалось с Hibernate. Главное такое на собесе не ляпнуть
Спасибо за ссылки. Надо будет ознакомиться. Хотя, пожалуй, самое сложное в обучении это как раз таки объемы нового материала. Столько всего надо изучить, прям не знаешь за что хвататься. Голова кругом идет.
а что делать если я неплохо знаком с XML, но он все-равно ввергает меня в ужас?)))
абзац про то, что примеры надо ручками набирать и потом еще самому себе задачку придумать аналогичную - поддерживаю всеми руками и ногами!))
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ