Add framework support idea нет hibernate

Обновлено: 06.07.2024

Имеется веб проект созданный в idea, на этапе создания было добавлен фреймворк hibernate и maven, сервером выбран GlassFish.
Сначала сделалась определенная часть для веба, авторизация, несколько сервлетов, красивости.. Все примитивно но по ссылочкам ходит, чего еще желать )
Далее было много прочитано и просмотрено на youtube информации о hibernate, выбран наиболее подходящий пример под задачу, создана БД MySQL, добавлены таблицы, по видео настроен hibernate.cfg.xml, который был положен в папку src\main\resources\
Создан HibernateUtil, Factory, интерфейс для DAO, и его имплементация для моей единственной MySQL.. Был создан для тестирования Main класс, где создавались обьекты, добавлялись в БД, брались оттуда, и все работало, я даже почувствовал себя программистом.. Сделал еще несколько сущностей, сделал связи один ко многим, и все работало.. Да впрочем и сейчас работает, если запускать через Main, но при попытке запустить это через веб, часть которая с hibernate перестает работать, для теста я делаю простой ajax запрос, и в сервлете в doPost выполняю самый простой тестовый метод, и получаю кучу ошибок. Просидев весь день, и читая разные форумы, я подозреваю, что либо у меня не правильная структура проекта (так, как создать war файл я тоже не могу, мавен начинает громко ругаться, что у меня вообще нет никаких библиотек), но вопрос больше - что делать.
Каюсь, совместно с hibernate я решил освоить и idea, до этого постоянно писал в eclipse, и возможно я просто не понимаю элементарщины, прошу сильно не ругаться, а указать куда копать, а я уж постараюсь..

Картинка с другого сайта.

Скрин структуры проекта:

Ниже код и ошибки..

собственно не работающий кусок

на всякий случай Book.java

и реализация CRUD в BookDao_MySQL

Думал над этим, я его мавеном подгружаю, и если запускать Main, все отлично работает

А вот в Веб приложении нет. У меня есть подозрение, что оно не подгружает при компиляции мавенские библиотеки, так, как только mysql-connector-java, и junit, то все остальное работает, можно как то заставить, что бы GlassFish кушал библиотеки мавена?

Спасибо за помощь, нашел..

Спасибо за помощь, нашел..

Честно говоря не понятно зачем тут вообще maven.
Идея репозитария maven в том, что не надо самому качать библиотеки и размещать их в специальную папку (/library).
По идее ч/з dependencies в pom.xml можно управлять зависимостями подключать нужные библиотеки.
Если Idea натравить на репозиторий maven то в большинстве случаев Idea сама предложить добавить зависимости. Например произведя поиск по имени класса.

Структура проекта в приложенном файле.

Вот класс HibernateUtil

Подскажите, пожалуйста, что еще можно сделать? В голове каша, разобраться не получается(((

Спасибо за информацию. Все получилось)))

Извините, что вопрос не по теме.

Вы не могли бы подсказать, в Хибере в выборке из БД при использовании Criteria условие

Как мы знаем, Hibernate поддерживается только в Ultimate Edition Intellij IDEA. Этот момент подчеркивается и в аналогичном неотвеченном вопросе . Поэтому я хотел бы добиться частичного результата с моим изданием сообщества. А именно, я хочу создать условия для создания и запуска моего приложения RDBMS. Ни слова о полном спектре IDEA поддержки RDBMS развития.

Чтобы включить Hibernate, мы должны (в соответствии с поддержкой Intellij ):

1) Создайте конфигурационный файл Hibernate hibernate.cfg.xml.

2) Загрузите файлы библиотеки, реализующие фреймворк Hibernate, и добавьте их в зависимости соответствующего модуля.

Это правильный путь? Если да, то какие библиотеки я должен загрузить (я намерен использовать JPA)?

2 ответа

Я столкнулся с проблемой TypeScript в IntelliJ IDEA Community Edition. Ранее я использовал IntelliJ IDEA Ultimate Edition для разработки Angular 2, и он отлично работает. Это ошибка, которую я получаю в своем файле .ts. Плюс нет никакого intelliSense. Эта функция недоступна в версии Community.

Я новичок в фреймворке Hibernate и в основном знаком с IntelliJ IDE. Я понимаю, что IntelliJ community edition по умолчанию не предоставляет поддержку фреймворка Hibernate. Есть ли другой способ включить Hibernate в проект IntelliJ отдельно ?

В документации говорится , что:

Эта функция поддерживается только в версии Ultimate edition.

Вы можете использовать Hibernate с IntelliJ сообществом, как и любую другую библиотеку. Действительно, только конечная версия предлагает поддержку Hibernate, но вы все равно можете добавить зависимость в проект, а затем настроить все вручную.

Похожие вопросы:

Почему, когда я запускаю экземпляр веб-приложения dart в IntelliJ community edition 14, он запускается с использованием сервера IntelliJ, но также запускает экземпляр сервера Pub? Сервер IntelliJ.

Я использую Intellij IDEA Community Edition и хотел установить плагин Ruby, но он доступен только для полной версии IDEA, хотя и распространяется по бесплатной лицензии. Как установить его в версии.

Я столкнулся с проблемой TypeScript в IntelliJ IDEA Community Edition. Ранее я использовал IntelliJ IDEA Ultimate Edition для разработки Angular 2, и он отлично работает. Это ошибка, которую я.

Я новичок в фреймворке Hibernate и в основном знаком с IntelliJ IDE. Я понимаю, что IntelliJ community edition по умолчанию не предоставляет поддержку фреймворка Hibernate. Есть ли другой способ.

Как я могу создать проект Grails в IntelliJ Community Edition, который нуждается в модулях AnjularJs, JQuery и InMemory DB, таких как JavaDB

Я использую IntelliJ IDEA 12 Community Edition и пытаюсь установить синтаксическую раскраску для файлов Javascript. Когда я выбираю Файл > Настройки > IDE настройки > редактор > цвета & шрифты.

Можно ли использовать App Engine Java с IntelliJ Community Edition? Я знаю, что есть официальный плагин для Ultimate Edition. Я бы хотел: иметь конфигурацию запуска/отладки развернуть на приложения.

Я прочитал лицензию IntelliJ, но не смог ясно понять их лицензионные условия. Правильно ли по закону использовать Community Edition IntelliJ, когда я работаю в своей компании? Или все-таки стоит.

Можно ли запустить веб-приложение с помощью Tomcat Server в Intellij Idea Community Edition? Я пытался найти какую-нибудь информацию об этом, но не добился никакого успеха.

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

hibernateMaven

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

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


И щелкаем на 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.

По-хорошему, для лучшего понимания, начинать ознакомление с базами данных лучше по порядку, с самого начала, без всяких там гибернейтов и прочего. Поэтому здесь не лишним будет найти какие-то гайды и сначала попробовать поработать с помощью классов JDBC, ручками писать SQL-запросы ну и все такое. Ну а тут пожалуй сразу перейдем к ORM модели. Что же это значит. Об этом конечно опять же желательно почитать отдельно, но я попробую вкратце описать. ORM (Object-Relational Mapping или объектно-реляционное отображение) — это технология для отображения объектов в структуры реляционных баз данных, ну т.е. чтобы представить наш джава-объект в виде строки таблицы. Благодаря ORM можно не заботиться написанием SQL-скриптов и сосредоточиться на работе с объектами. Как этим пользоваться. В Java есть еще одна замечательная штука, JPA (Java Persistence API), которая реализует ORM концепцию. JPA — это такая спецификация, она описывает требования к объектам, в ней определены различные интерфейсы и аннотации для работы с БД. JPA является по сути описанием, стандартом. Поэтому есть множество конкретных реализаций, одной из которых (причем одной из самых популярных) является Hibernate, в этом собственно и заключается суть этого фреймворка. Hibernate — реализация спецификации JPA, предназначенная для решения задач объектно-реляционного отображения (ORM). Надо подключить все это дело к нашему проекту. Кроме того, для того, чтобы наш Spring не стоял себе в сторонке а тоже участвовал во всей этой движухе с базами данных, нужно подключить еще пару модулей, т.к. все что мы получили от зависимости spring-webmvc для этого уже не достаточно. Нам еще понадобится spring-jdbc, для работы с базой данных, spring-tx, для поддержки транзакций, и spring-orm, для работы с Hibernate. Добавим зависимости в pom.xml : Достаточно этих двух зависимостей. javax.persistence-api подъедет вместе с hibernate-core, а spring-jdbc и spring-tx вместе со spring-orm.

Entity

  • @Entity — указывает на то, что данный класс является сущностью.
  • @Table — указывает на конкретную таблицу для отображения этой сущности.
  • @Id — указывает, что данное поле является первичным ключом, т.е. это свойство будет использоваться для идентификации каждой уникальной записи.
  • @Column — связывает поле со столбцом таблицы. Если имена поля и столбца таблицы совпадают, можно не указывать.
  • @GeneratedValue — свойство будет генерироваться автоматически, в скобках можно указать каким образом. Не будем сейчас разбираться как именно работают разные стратегии. Достаточно знать, что в данном случае каждое новое значение будет увеличиваться на 1 от предыдущего.

Свойства Hibernate

Ну что ж, приступим к настройке нашего Hibernate. И первым делом вынесем кое-какую информацию, такую как имя пользователя и пароль, url и еще кое-что в отдельный файл. Можно конечно указывать их обычной строкой прямо в классе, как мы делали это когда проверяли соединение ( String username = "root"; и потом передавали это в метод для создания соединения). Но все таки правильнее хранить такие статические данные в каком-нибудь property файле. И если, например, понадобится изменить базу данных, тогда не придется лазить по всем классам и искать где это используется, достаточно будет один раз изменить значение в этом файле. Создадим файл db.properties в директории resources: Ну сверху все понятно, параметры для подключения к бд, т.е. имя класса драйвера, урл, имя пользователя и пароль. hibernate.dialect — это свойство нужно для того, чтобы указать Hibernate какой именно вариант языка SQL используется. Дело в том, что в каждой СУБД для того чтобы расширить возможности, добавить какой-то функционал или что-то оптимизировать, обычно слегка модернизируют язык. В результате получается, что у каждой СУБД свой SQL диалект. Это как с английским, вроде язык один, но в Австралии, США или Британии он будет чуть-чуть отличаться, и какие-то слова могут иметь различное значение. И для того, чтобы не было никаких проблем с пониманием, нужно прямо сообщить Hibernate с чем именно ему предстоит иметь дело. hibernate.show_sql — благодаря этому свойству в консоли будут отображаться запросы к БД. Это не обязательно, но с этой штукой хоть можно глянуть что происходит, а то иначе может показаться что Hibernate какую-то магию творит. Ну, оно конечно не совсем понятно будет выводить, лучше для этого какой-то логгер использовать, но это как-нибудь в другой раз, пока и так сойдет.

Конфигурация Hibernate

  • С @Configuration и @ComponentScan уже разобрались когда делали класс WebConfig .
  • @EnableTransactionManagement — позволяет использовать TransactionManager для управления транзакциями. Hibernate работает с БД с помощью транзакций, они нужны чтобы какой-то набор операций выполнялся как единое целое, т.е. если в методе возникнут проблемы с какой-то одной операцией, тогда не выполнятся и все остальные, чтобы не было как в классическом примере с переводом денег, когда операция снятия денег с одного счета свершилась, а операция записи на другой не сработала, в итоге деньги исчезли.
  • @PropertySource — подключение файла свойств, который мы недавно создавали.
  • Environment — для того, чтобы получить свойства из property файла.
  • hibernateProperties — этот метод нужен чтобы представить свойства Hibernate в виде объекта Properties
  • DataSource — используется для создания соединения с БД. Это альтернатива DriverManager, которой мы использовали ранее, когда создавали для проверки подключения метод main . В документации сказано, что DataSource использовать предпочтительнее. Так и поступим, естественно не забыв почитать в интернете в чем разница и преимущества. В частности, одним из преимуществ является возможность создания пула соединений Database Connection Pool (DBCP).
  • sessionFactory — для создания сессий, с помощью которых осуществляются операции с объектами-сущностями. Здесь мы устанавливаем источник данных, свойства Hibernate и в каком пакете нужно искать классы-сущности.
  • transactionManager — для настройки менеджера транзакций.

Слой доступа к данным

Читайте также: