IntelliJ IDEA 10 генерирует объект (POJO) из модели БД

Как я могу создать объект (POJO) из модели базы данных с помощью IntelliJ IDEA 10. Я создаю «Источник данных» в IntelliJ, но понятия не имею, как я могу создать POJO.


person pierre    schedule 10.03.2011    source источник


Ответы (2)


ОБНОВЛЕНИЕ:
В IntelliJ 16 эта функция теперь реализована. Шаги для этого:

  1. Контекстное меню просмотра База данных
  2. Скриптовые расширения
  3. Создание POJO

Вы можете прочитать больше здесь:
Запрос функции: разрешить генерировать классы из схемы базы данных для разработчиков простого JDBC.


Примечание. Следующая информация относится к версии 15 и более ранним:

Во-первых, вам нужно сообщить IntelliJ, что вы используете Hibernate (я думаю, вы, если вам нужна таблица orm POJO)

  1. Перейти к структуре проекта (alt+ctrl+shift+s)
  2. В настройках проекта выберите Модули
  3. Нажмите + и добавьте фасет Hibernate в свой модуль.

Теперь, когда вы настроили аспект конфигурации гибернации, вы можете извлечь свои POJO.

  1. На нижней правой горизонтальной панели вы увидите вкладку «Постоянство» (если вы не можете найти вкладку «Постоянство», вы можете отобразить ее, выбрав «Вид» > «Инструментальные окна» > «Постоянство»).
  2. Там вы можете щелкнуть правой кнопкой мыши значок гибернации с именем вашего модуля.
  3. Перейти к созданию сопоставления сохраняемости по схеме базы данных
  4. Теперь я думаю, вы можете найти свой путь ...
  5. В общем, настройки выбирают источник данных, который вы хотите использовать, и теперь вы можете видеть все таблицы в вашем объекте источника данных.
  6. Теперь вы можете делать много вещей, добавлять отношения со знаком +, изменять имя и тип свойств POJO и т. д. Примечание: если вы получаете сообщение об ошибке, а кнопка «ОК» отключена, возможно, это связано с тем, что тип данных, который IntelliJ нашел для вашего POJO, инвалид. Просто измените его на тот, который вам нужен, и вы готовы к работе!
person zpontikas    schedule 10.03.2011
comment
Также можно использовать фасет JPA. - person nahab; 20.11.2013
comment
@zpontikas У меня нет опции hibernate или jpa в intellij idea 12.1.3. Нужно ли мне что-то делать, чтобы получить это? - person Rips; 03.04.2014
comment
Эти аспекты доступны только в версии Ultimate. - person zpontikas; 03.04.2014
comment
Большое спасибо. Все, что я могу добавить: если вы не можете найти вкладку или панель Persistence, упомянутую в шаге 1, вы можете отобразить ее, выбрав View › Tool Windows › Persistence. - person Andrei Rykhalski; 02.02.2015
comment
@AndreiRykhalski спасибо. Я добавил это к ответу на случай, если кто-то потеряется - person zpontikas; 02.02.2015
comment
Этот подход дает вам зависимость от спящего режима. Вопрос был в том, как создать POJO, а не в том, как прикрепить свой проект к фреймворку! - person foo; 07.02.2018
comment
Это БЫЛ самый простой способ создать POJO до версии 16 (15?). Теперь, начиная с версии 16, вы можете использовать сценарий создания POJO, описанный в разделе ОБНОВЛЕНИЕ. - person zpontikas; 07.02.2018
comment
нажимаю и ничего не происходит - person Kalpesh Soni; 17.05.2018
comment
Только после этого я думаю, вы сможете найти свой путь, который мне не подходит. Я выбираю источник и таблицы. Затем он хочет отобразить аннотации XML или JPA. Когда я выбираю сопоставления XML, я не могу войти в каталог. Когда я выбираю Annotation, ему нужна фабрика сеансов, когда я пытаюсь добавить фабрику сеансов, он жалуется, что нет корня источника, но он есть. Он также говорит, что ему нужна единица персистентности, какой бы она ни была. Если я выбираю отдельный XML для каждой сущности, он говорит, что выполняет генерацию ИЛИ, но тогда ничего не генерируется. - person Florian F; 26.10.2018

Используемые по умолчанию расширения сценариев Generate POJOs.groovy не очень хороши при работе с таблицами с подчеркивание (что очень распространено).

Поэтому я делаю некоторые модификации.

Основной код

def calcFields(DasObject table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.dataType.specification)
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        fields += [[
                       name : javaName(col.name, false),
                       type : typeStr,
                       annos: """
    /**
     * $col.comment
     */"""]]
    }
}

static String javaName(String str, boolean capitalize) {
    def s = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str);
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

Вы можете найти всю суть здесь https://gist.github.com/aristotll/ad799a7462e8b705b26103944cca24a6

person aristotll    schedule 26.07.2017