JDBC Создать таблицу - PullRequest
       8

JDBC Создать таблицу

3 голосов
/ 27 ноября 2010

Мое веб-приложение, написанное на Spring Web-MVC, использует JDBC для работы с данными.Я хочу, чтобы мое приложение автоматически создавало таблицы (и схему), когда конечный пользователь запускает его впервые (но загружает созданную схему, когда запускает ее снова).Я использую HSQLDB в качестве движка базы данных.

Есть идеи, как это сделать?(Я не хочу писать в приложении специальные методы для проверки, существует ли таблица, и если нет, для их создания. Есть ли еще какой-нибудь полезный метод, делающий это?)

PS Ядумать об использовании Hibernate вместо простого метода подключения.Есть ли способ решить это с помощью Hibernate?

Ответы [ 3 ]

3 голосов
/ 28 ноября 2010

Spring JDBC имеет стандартный механизм инициализации баз данных .

Если вы хотите инициализировать базу данных и можете предоставить ссылку на bean-объект DataSource, используйте тег initialize-database в пространстве имен spring-jdbc:

<jdbc:initialize-database data-source="dataSource">`
  <jdbc:script location="classpath:com/foo/sql/db-schema.sql"/>
  <jdbc:script location="classpath:com/foo/sql/db-test-data.sql"/>
</jdbc:initialize-database>

Вы также можете включить или выключить это, используя системные свойства:

<jdbc:initialize-database data-source="dataSource"
    enabled="#{systemProperties.INITIALIZE_DATABASE}">
  <jdbc:script location="..."/>
</jdbc:initialize-database>

Об использовании hibernate: hibernate также может автоматически генерировать схему базы данных, вот соответствующая часть справки: Автоматическое создание схемы

3 голосов
/ 28 ноября 2010

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

Просто создайте БД с помощью установщика вашего веб-приложения.Это также может быть сделано через Интернет.

Альтернативой является реализация ServletContextListener, которая проверяет БД и при необходимости создает таблицы.ServletContextListener выполняется только один раз при запуске приложения, поэтому вам не нужно проверять его при каждом запросе или около того.

1 голос
/ 28 ноября 2010

Я только начал создавать приложение на основе Spring. Я использую JPA + Hibernate для реализации уровня доступа к базе данных. Одним из хороших побочных эффектов этого способа является то, что он ведет себя точно так, как вы описываете, то есть база данных создается автоматически при запуске приложения. Это очень удобно. Я не написал ни одной строки в SQL для этого проекта, у меня есть база данных с индексами, внешними и первичными ключами и т. Д. Это просто фантастика, и я рекомендую вам сделать то же самое.

...