2015-04-24 4 views

ответ

5

нет, вы не можете, потому что генератор jhipster yeoman «только» выравнивает объекты в соответствии с шаблонами + заданные параметры/варианты. На этом этапе он не запрашивает внешние источники, такие как базы данных.

Генератор создает все файлы для изменений jpa, угловых и линеазиса. Наконец, Liquibase создает таблицы с помощью списков изменений во время запуска, если они еще не существуют.

Итак, вы можете сказать, что jhipster использует «сущность сначала» вместо подхода «table first».

Хотя это была бы приятная функция, я не думаю, что она будет интегрирована в jhipster, потому что существующие базы данных настолько различны, что было бы слишком сложно обрабатывать каждую возможность. Существуют разные варианты первичных ключей, разных типов данных, различных реализаций отношений «много-ко-многим» или обобщений и т. Д. Или вы можете запросить новую функцию на Github и, возможно, он будет реализован ...

Но, чтобы дать несколько направлений: я была такая же ситуация, когда я попытался перенести существующую базу данных около 50 таблиц и с большим количеством данных в jhipster (это был ihipster 1.6 или около того), и я также подумал о «рефакторинге базы данных» [1]. Однако мое «решение» состояло в том, чтобы создать новую базу данных с помощью jhipster, а затем перенести данные из старой базы данных в новую с помощью некоторых SQL-операторов. Основные причины:

  • У меня была другая модель базы данных, которая отличается от jhipster ожидается модели (например, я использовал другие первичные ключи и ссылки)
  • Нет репозиториев, ни угловую материал (который был моей главной причиной для использования jhipster) генерируются
  • Отсутствие изменений в линеазисах [2]
  • Такой специальный рефакторинг вызывает много дополнительных изменений после того, как вы попытаетесь создать объект jhipster для существующей таблицы. Эти изменения могут быть более трудоемкими, чем создание новых объектов с помощью jhipster.
  • Эти изменения могут также вызвать проблемы в обновлении художественных

и да, РОО имеет такую ​​технику для реинжиниринга или рефакторинга базы данных (http://docs.spring.io/spring-roo/reference/html/base-dbre.html). AFAIK, он создает только объекты, совместимые с roo, которые основаны на JPA. Таким образом, он также отличается от данных Spring JPA, которые используются jhipster (такая же проблема, как и другие инструменты jpa-refectoring, такие как [1])

[1] Я использовал плагин Eclipse JPA, который может создавать классы объектов jpa из существующего базы данных в другом проекте на основе dropwizard. Но я не пробовал это в сочетании с Spring/Jhipster.

[2] Можно создать LiquiBase списков изменений из существующей базы данных: http://www.liquibase.org/documentation/generating_changelogs.html

4

Spring Roo включает аддон DBRE, отличный инструмент для базы данных обратного инжиниринга, который генерирует ваши объекты домена автоматически.

@eplog вы ошибаетесь, DBRE позволяет вам использовать опцию --repository для создания репозиториев JPA Spring Data для каждого объекта. Посмотрите на http://docs.spring.io/spring-roo/docs/1.3.1.RELEASE/reference/html/base-dbre.html#d4e1765

Имхо, преимущества, которые DBRE предоставляет вам следующие:

  • Вам не нужно искать, тестировать и изучать 3 инструменты сторонних производителей, Roo делает это для вас.
  • Reverse egineering является мощным инструментом для переноса унаследованных приложений в тех условиях, в которых вы не можете перенести базу данных

Надеется, что это помогает. Наслаждайтесь Roo!

+1

См. Также http://docs.spring.io/spring-roo/reference/html/base-dbre.html –