Я использую Spring JdbcTemplate
с шаблоном ДАО для доступа к базе данных. Вместо того, чтобы создать таблицы базы данных вручную, я ищу способ генерировать таблицы в уровне DAO. Я понимаю, что могу использовать JdbcTemplate
для выполнения операторов я только ищу правильное место, чтобы сделать это.
Существует ли лучшая практика для этого?
Слегка оффтоп:
Это абсолютно необходимо, чтобы вам нужно выполнить команды DDL из строя в вашем коде? На самом деле я думаю, что это хорошая идея, чтобы иметь разделение между администратором DB и использованием БД. Наша настройка безопасности базы данных Oracle здесь фактически устанавливается так, чтобы таблицы были настроены с использованием другого пользователя базы данных (DB_owner), чем тот, который работает на выборах, вставках, удаления управляются DB_USER.
Это предотвращает случайное удаление таблиц или изменение схемы, а также позволяет установить DB_USER так, что только привилегии, которые абсолютно необходимыми, которые добавляют слой безопасности.
Я полагаю, что это зависит от характера вашего сервиса / приложения, но подумайте о преимуществе создания таблиц внутри кода (и может ли возможная ошибка в коде DDL-код может случайно уничтожать производственные данные).
Когда я работаю со своей ViewModel, у меня будет свойство CategureId и на него будет помещен мой валидатор диапазона, а не раскрывающийся список. Список выбора предоставляет только те данные, которые проверяются по модели.
[Required(ErrorMessage = "Category Required")]
[System.ComponentModel.DataAnnotations.Range(1, double.MaxValue, ErrorMessage = "Please Select A Category")]
[DisplayName("Category")]
public int CategoryId {get;set;}
В представлении у меня будет раскрывающийся список с идентификатором для моей категории, но список из моих категорий:
<%= Html.DropDownList("CategoryId", (SelectList)Model.Categories, "(Select)")%>
, когда ваши данные отправляются обратно на сервер, вы должны заметить, что класс содержит значение идентификатора.
-121--4904114- Я загрузил застежку -молнию на Drop.io .
На боковой заметке: Скотт Хансельман имеет запись в блоге , в которой он рассказывает о некоторых темах Visual Studio, стоит посмотреть!
ПРАВКА : 21 Ян 2011
Drop.io прекратил обслуживание, так как он был куплен Facebook.
Я загрузил застежку -молнию на мой skydrive вместо:
https://skydrive.live.com/?cid=07d66fa40734f332&sc=documents&id=7D66FA40734F332! 833 (может потребовать входа)
Спасибо, что указали на это, Уилл!
-121--3959401- Используйте методы .update ()
, доступные в (Simple) JdstartOperations
, количество возвращаемых строк - это количество затронутых строк. Они должны использоваться специально для операторов INSERT
и UPDATE
.
Вы можете использовать метод Execute (String) :
public void execute(String sql) throws DataAccessException
Выдайте один execute SQL, как правило, оператор DDL.
Указанный: Execute In Interface JDBCoPerationsПараметры: SQL - Статический SQL для выполнения
броски: DataaccessException - если есть какие-либо проблемы
Однако, как упоминание Beny23, я был бы подозрительным к фактической необходимости сделать это программически в живое приложение.