Spring JDBC: как создавать таблицы? - PullRequest
5 голосов
/ 20 января 2010

Я использую Spring JdbcTemplate с шаблоном DAO для доступа к базе данных. Вместо того чтобы создавать таблицы базы данных вручную, я ищу способ создания таблиц на уровне DAO. Я понимаю, что могу использовать JdbcTemplate для выполнения операторов, я только ищу подходящее место для этого.

Есть ли лучшая практика для этого?

Ответы [ 3 ]

6 голосов
/ 20 января 2010

Вы можете использовать метод execute (String) :

public void execute(String sql) throws DataAccessException

Выполнить одиночное выполнение SQL, обычно оператор DDL.
Указано: выполнить в интерфейсе JdbcOperations

Параметры: sql - статический SQL для выполнения

Выдает: DataAccessException - если есть какие-либо проблемы

Однако, как упоминает beny23, я бы с подозрением относился к реальной необходимости сделать это программно в живом приложении.

2 голосов
/ 20 января 2010

Немного оффтоп:

Обязательно ли нужно выполнять команды DDL из своего кода?На самом деле я думаю, что было бы неплохо разделить администратор БД и его использование.Наша настройка безопасности базы данных Oracle здесь фактически настроена так, что таблицы настраиваются с использованием другого пользователя базы данных (DB_OWNER), нежели тот, на котором запущены команды SELECT, INSERT, DELETE, запускаемые DB_USER.

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

Полагаю, это зависит от характера вашей службы /приложения, но подумайте о преимуществах создания таблиц внутри кода (и о том, может ли возможная ошибка в коде DDL случайно уничтожить производственные данные).

1 голос
/ 20 января 2010

Используйте .update() методы, доступные в (Simple)JdbcOperations, число, которое они возвращают, является числом затронутых строк. Предполагается, что они специально используются для операторов INSERT и UPDATE.

...