Я сталкивался (да и не только я) с проблемой развертывания Hibernate и решил попробовать осветить данную тему. Hibernate — это популярный framework, цель которого связать ООП и реляционную базу данных. Работа с Hibernate сократит время разработки проекта в сравнении с обычным jdbc.

Для новичка программирования настройка framework часто вызывает затруднения. Помощь комьюнити с освещением базовых проблем поможет начинающим осваивать языки программирования быстрее. Статья предназначена только для начинающих в Java, которые впервые развертывают hibernate. Я развертывал hibernate на базе лицензионной IDEA.
Maven framework для автоматизации сборки проекта на основе POM, позволяющая подключать из интернета зависимости, не скачивая библиотеки в проект. POM (project object model) -декларативное описание проекта. Копируем название библиотек в xml формате с сайта mvnrepository.com.

Для начала создаёте структуру проекта maven:

hibernateMaven

Потом в pom.xml вставляем. Нам понадобятся две зависимости: hibernate-core и mysql-connector, но если вы хотите больше функционала — вы должны подключить больше зависимостей.

Существуют стандартные рекомендации подключать зависимости по отдельности, но я так не делаю.

<properties>
        <hibernate-version>5.0.1.Final</hibernate-version>
    </properties>
    <dependencies>
        <!--driver for connection to MYSql database -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>

        <!-- Hibernate -->
        <!-- to start need only this -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate-version}</version>
        </dependency>

        <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate-version}</version>
        </dependency>
    </dependencies>

И щелкаем на Import Changes Enable Auto-Import, автоматически импортируя изменения.

image

Подключаемся к базе данных, которая развернута на локальном компьютере, выбираем поставщика баз данных MySQL.

image

Вводим имя базы данных, имя пользователя и пароль. Протестируйте соединение.

image

Выбираем проект и через framework support просим у хибернейта создать за нас Entity файлы и классы с Getter и Setter.

image

image

Выбираем Generate Persistence Mapping через кладку Persistence, выбираем jenerate Persistance Mapping, а в появившемся окне прописываем схему базы данных, выбираем prefix и
sufix к автоматически сгенерированным названиям. Будут сгенерированы названия xml файлов и классов с аннотациями:

image

Раскидайте файлы в таком порядке: .xml-файлы должны находится в папке с ресурсами, а сущности в папке java.

image

Дописываем в hibernate.cfg username и password (звёзды поставил я, а так пишите обычным шрифтом).

image

Вот и все! Дальше через класс main запускаем проект.

Это моя первая статья. Рассчитываю на здравую критику.
Поделиться с друзьями
-->

Комментарии (31)


  1. alexeykuzmin0
    26.01.2017 16:46
    +2

    Для меня, как интересующегося Java, но никак не могущего собраться и таки стать «начинающим», один из главных вопросов «А зачем нам Hibernate?». В каких случая он жизнь облегчит? Если я собираюсь писать калькулятор для длинных чисел на Java, он мне нужен?


    1. JDBiber
      26.01.2017 16:52
      -1

      Вторая строчка в статье:

      Hibernate — это популярный framework, цель которого связать ООП и реализационную базу данных


      Вы даже до нее не дочитали?


      1. alexeykuzmin0
        26.01.2017 16:58
        +2

        Я имел в виду, что на этой части стоило бы остановиться поподробнее


        1. AlexPu
          27.01.2017 14:40

          Для вас поподробнее не нужно — просто потому, что конкретно вам этот фреймворк не нужен

          Те кому он нужен, знают о сушествовании такого КЛАССА фрейворков как ORM (ну или хотя-бы знакомы с концепцией ORM) и знают о существовании спецификации JPA, которая является частью спецификации Java EE и реализацией которого Hibernate и является — все эти познания получаются из других статей — более обобщенных… а вам пока не надо — когда понадобится тогда все и узнаете (причем к тому моменту процентов 90 подоюных вопросов отпадут сами собой)


          1. alexeykuzmin0
            27.01.2017 14:46
            +1

            Спасибо


        1. NLO
          00.00.0000 00:00

          НЛО прилетело и опубликовало эту надпись здесь


    1. 1000islands
      28.01.2017 18:14

      На вопрос «зачем?» можно написать много всего, и мне кажется, что это не тема данной статьи. Автор молодец, на мой взгляд хорошее пособие для начинающих. Меньше текста, больше наглядности.


  1. tmn4jq
    26.01.2017 17:22
    +1

    > Потом в porn.xml вставляем

    Раз уж статья для начинающих, то не будем измываться над названиями файлов.

    Ок, мы настроили хибернейт. Возникает вопрос – и что? Что дальше? Как им пользоваться? Стоило бы показать примеры непосредственной работы с базой.

    И третий момент – попробуйте настроить хибернейт современным способом. XML – это уже не модно.


    1. 4410
      26.01.2017 17:58

      Да и чистый hibernate не модно. Все давно юзают Spring Data JPA.

      Вообще да, лучше бы расскали больше о том что это такое, про маппинги там, связи, всё это. А так вся статья из скриншотов, когда можно в идее выбрать одной галкой Spring Data JPA и получить структуру проекта.


  1. vlanko
    26.01.2017 23:11

    Кстати, все плюшки для Хибернейт работают только в платной Идее?


  1. gshock
    26.01.2017 23:45

    Статья ради картинок получилась, в 3-м тысячилетии моветон настраивать Хибернейт через XML, И да, комрады правы, пора абстрагироваться от хибернейта в пользу того же Spring Data JPA/JPA3


  1. Revertis
    27.01.2017 00:40
    +1

    реализационную базу данных
    точно РЕАЛИЗАционная?
    framework ..., позволяющая
    а давно фреймворк стал женского рода?

    Кончайте набирать статьи лапой на телефоне, можно такого понаписать…


  1. immaculate
    27.01.2017 20:51

    В мире Java все осталось в 90-х что-ли? Ради подключения ORM надо писать десятки простыней XML кода? Статья об ORM, в которой ничего не написано о собственно ORM.


  1. osigida
    27.01.2017 22:51

    такими темпами, запуск IDE скоро начнет вызывать затруднения…


  1. breakoffbrain
    28.01.2017 18:15

    *реляционную базу. И личный совет — сначала впредь стоит сильно стараться над материалом статьи, посмотреть был ли такой материал до этого и на сколько понятно ваше изложение.


  1. dkDer3k
    28.01.2017 18:15

    реализационную базу

    Не имелось ли тут ввиду слово «реляционная»


  1. Vint08
    28.01.2017 18:15

    porn.xml это сильно.


  1. mnaoumov
    28.01.2017 18:15

    porn.xml — опечатка по Фрейду


  1. Sapporo
    28.01.2017 18:15

    > Потом в porn.xml вставляем
    измините на pom.xml, а то странное имя файла выходит


  1. echo_mont
    28.01.2017 18:16

    Даже для меня, новичка, это черезчур гламурно и рюшечно.


  1. kaktus_4ever
    28.01.2017 18:18
    -1

    Удалите этот пост.
    Так нельзя. Все начаось с веселого porn.xml а закончилось страшной реализационной базой данных.


  1. lslayer
    31.01.2017 11:57

    Вот появятся программисты, которые умеют настроить hibernate по такому туториалу, напишут в резюме что умеют в хибернейт (а что, по картинкам же все очень просто), а взрослые дяди потом теряют много времени, собеседую таких вот «программистов».
    И что самое плохое — что как бы не старался — такие статьи будут продолжать выходить, и такие «программисты» будут все больше и больше считать себя программистами.


    1. tmn4jq
      31.01.2017 12:43

      А вы сразу стали опытным? Все по-разному начинают, и автор поста, не исключно, в скором будущем наберется опыта. Статья несерьезная, но вместо того, чтобы гнобить автора, лучше ткнуть его носом в те месте, где он накосячил и порекомендовать что-то из своего опыта.


      1. AlexPu
        31.01.2017 14:15

        Насчет «ткнуть носом»… Представьте себе, что вы этой, извините херней занимаетес уже… сколько там… 17 лет… чуть больше… Не в бкувальом смысле именно Hibernate а в том смысле что все это время так использовали тот или иной ORM фреймвок (чаще всего конечно hibernate, и чаще всего в связке со Spring ) практически в каждом проекте… какое вы получите удовольствие от вылавливания чужих косяков… да и не косяки это по большей части… само все придет с опытом… Но я лично совсем не против чтобы автор статьи и прочие из тех которые «умеют настроить hibernate» считали себя программистами… вон lslayer считает же себя таковым!


        1. tmn4jq
          31.01.2017 16:20

          Само собой, лично вам мало статей на эту тему покажутся интересными и новыми, но с другой стороны – вы и не должны вычитывать статью и искать косяки. Я к тому, что критика должна быть, так сказать, продуктивной. Не просто сказать автору, что он псевдопрограммист, а сказать, что именно в статье является бредовым и порекомендовать вектор развития. Я тоже не против таких статей, это даже хорошо – человек как минимум начинает структурировать мысли


          1. AlexPu
            01.02.2017 17:35

            автор написал вполне адекватную статью


      1. lslayer
        31.01.2017 14:35

        Нет. И я не об «сразу опытным». Я о том, что такие статьи должны заканчиваться ссылками на более другие статьи, где глубже раскрывается тема.
        Основной мой месседж — нельзя давать людям понять что %frameworkName% — это легко.


        1. AlexPu
          31.01.2017 15:09
          +1

          Я торжественно даю понять людам, что Hibernate — это легко.

          Именно в этом и состоит смысл существования Hibernate (равно как и прочих фреймворков и библиотек — по крайней мере большинства из них) — облегчать и упрощать производственную деятельность прикладного разработчика программного обеспечения

          Что касается того, чем такие статьи ДОЛЖНЫ заканчиваться, а чем НЕ ДОЛЖНЫ… вы уж уточните сразу кто кому и сколько должен… а то автор этой статьи явно не очень хорошо умеет читать ваши мысли


          1. lslayer
            31.01.2017 15:12

            Я торжественно даю понять людам, что Hibernate — это легко.

            Подскажите пожалуйста, сколько лет вы работаете с Hibernate?


            1. AlexPu
              01.02.2017 11:35

              Я там выше уже подсказал


              1. AlexPu
                01.02.2017 11:54

                Во! Вспомнил с точностью до года — первый коммерческий проект с использованием hibernate у меня был в 2003 году… Это был проект для довольно известного шведского ритейлера. это была какая-то бетта второй версии фреймворка.

                Но за самим проектом я следил намного раньше, и был знаком и с первой версией, которую не считал пригодной для коммерческой разработки (честно говоря у меня было такое мнение и по поводу второй версии, но в том проекте рулил не — мне просто пришлось принять технологический стек как данность).

                А в целом первый ORM собственной разработки я писал в 98-м году… тогда правда термина ORM не существовало, а java была… ну чем-то вроде прикола… Позже попробовал ORM мэппинг EJB (версии 1.1) — до изобретения аннотаций еще мнооого времени оставалось! И это тоже было легко! по тем временам конечно… Более того — благодаря своему знакомству с EJB меня пригласили на отличнуюю работу в одну из стран загнивающего запада (причем выбор был из двух вариантов). Ну а позже и hibernate подтянулся… причем я сразу стал его испольовать в связке со Spring (и с тех пор мой подход ниразу не изменился). Вот Spring это действительно сложно… А Hibernate это безусловно легко. Причины того что «Spring это действительно сложно» состоят в том, что Spring это не фреймворк в классическом понимании — это скорее набор фреймворков, предназначенный для конструирования приложений