Как установить базу данных с помощью Spring MVC - PullRequest
0 голосов
/ 26 октября 2011

У меня есть проект Spring MVC, который я получил от другого разработчика.Я обычно нахожу там файлы .sql для инициализации БД, но в этом коде, похоже, ничего подобного нет.Я не использую Roo или какие-либо инструменты, которые, как я знаю, могут выполнять инициализацию базы данных.

Я уже некоторое время использую Python / Django, поэтому я предполагаю, что мой вопрос: есть ли что-то, что я мог бы использоватьс Spring MVC, как в Django "manage.py syncdb" для инициализации базы данных на основе кода?Может быть, задача сборки, сценарий или что-то еще, кроме обратного инжиниринга кода и выяснения того, какие таблицы должны идти в БД?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Самое простое решение

  • Если вы все еще можете поговорить с этим "другим разработчиком" => , просто спросите

Если вышеупомянутое не даетработа ...

Вы должны понять, на каком механизме / технологии постоянства основан этот проект.Вот несколько примеров:

Он основан на Hibernate

Просто найдите слово hibernate во всех файлах.Вы видите что-нибудь?Посмотрите на зависимости проекта, есть ли у него спящие банки?и т.д ..

Если это действительно Hibernate, вы можете сгенерировать свою схему на основе ваших доменных объектов (близких к Django "manage.py syncdb"), добавив следующее свойство Hibernate:

<prop key="hibernate.hbm2ddl.auto">create</prop>

к сессионному компоненту Factory.Это выглядело бы как эта конфигурация.Или, если у вас есть файл «persistence.xml», добавьте это свойство (в свойствах Hibernate).Вам нужно будет «запустить» проект, чтобы создать эту схему.

Он основан на Spring JDBC ( Шаблон )

Снова, найдите его.

В этом случае вам придется написать несколько SQL (думать об этом как о миграции Rails, но в SQL :)).Как только вы это сделаете, вы можете использовать в памяти DB, например, H2 (по умолчанию он использует HSQLDB), чтобы фактически достичь того же эффекта, что и с "hibernate.hbm2ddl.auto":

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

Подробнее о Поддержка встроенных БД

Она основана на магии

В этом случае искать нечего (нуМожет быть, для DAO или Repository), но самый простой подход - просто взять одну услугу и следовать за белым кроликом:

service.rememberThePlace( place ) { placeDao.save( place ) }

Теперь посмотрите на Дао ... есть ли у неголюбой Hibernate импорт?А как насчет ...JdbcTemplate и т. Д.

0 голосов
/ 26 октября 2011

TL; DR: Нет, если только он не использует механизм DB / ORM, который может быть запрошен или прочитан из файлов конфигурации.

Невозможно волшебным образом создать БД, не зная, какая модель БД.Если он использует ORM, вероятно, будут файлы сопоставления XML или аннотированные классы, которые описывают структуру базы данных (или, по крайней мере, некоторые из них).У большинства ORM есть какой-то способ взять эту конфигурацию и превратить ее в DDL.

Если он не использует ORM, как, например, если он использует Spring JDBC, вам нужно либо предоставить вам структуру БД, либо вы можете обратить вспять-инжиниринг его из SQL, содержащегося в коде (или конфиге, зависит).

Если он использует OODB, то это зависит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...