2009-09-21 2 views
3

В основном то, что мне нужно знать, это:Своего рода настойчивость данных

Я должен показать выпадающий список стран, в мои пользователь каждая страна также имеет код, связанный с ним. Мне нужно будет работать как с страной, так и с кодом. Какой был бы лучший подход:

-Мы (разработчики) думают о таблице в нашей базе данных приложений с этими данными или XML-файлом. -Наш «архитектор» говорит, что это старая школа, и что мы должны использовать константы в нашем приложении с картой, которая связывает страну с кодом

Пожалуйста, помогите мне чувствовать умный

ответ

2

Я согласен с вами, что вы должны не жесткий код, это или использовать константы. Есть несколько хороших вариантов в зависимости от твоих потребностей:

  • Java Properties Files - Если у вас есть только несколько пар ключ-значение для хранения, это самый простой способ, и легкий в использовании.

  • Хранение XML - Если вы ищете постоянство и ищете XML для хранения, я бы рекомендовал посмотреть на JAXB. Это часть Java 6 и сделает вашу жизнь проще, чем пытаться использовать DOM.

  • Постоянство базы данных. Если у вас больше данных, которые часто меняются, вы также можете посмотреть их сохранение в базе данных. JPA - отличная стандартная библиотека для этого. Это, вероятно, слишком много для того, что вы ищете.

Нижняя линия жесткого кодирования ушла в прошлое. Есть много отличных способов получить данные быстро и легко, не прибегая к жесткому кодированию всего.

+0

На самом деле, иррациональный страх жесткого кодирования ушел в прошлое. Данные - это код, код - данные, и ни один из них не является строго «сложнее», чем другой. –

1

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

Если у вас уже есть синтаксический анализ XML в вашем приложении, используйте XML-файл для определения данных. Он уже решает все проблемы (например, если вам нужно добавить второй атрибут для каждой страны или что-то еще).

Если вы не используете XML для чего-либо еще, я предлагаю попробовать. Это не добавляет много к вашему приложению. В противном случае используйте простой текстовый файл, возможно, CSV.

0

Короче говоря, ваш архитектор ошибается (или, по крайней мере, он, если ваш пересказ его положения является точным). Это не должно быть в коде.

Данные не являются статическими; название страны меняется, создается новая, или некоторые перестают существовать.

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

+0

Так что, если данные не статичны; ни код. –

+0

@Michael Borgwardt, когда вы сообщаете своему начальнику, что для того, чтобы начать доставку клиентам в WhereverStan, или исправить написание Мьянмы, что вам нужно перераспределить приложение. Именно тогда вы понимаете, что вам следует отделить эту информацию от кода. – jabbie

+0

Так что, если мне нужно перераспределить приложение? Для webapp нажмите кнопку. И если я отделяю «информацию» от «кода», я * еще * должен передислоцировать, если я не держу его на сервере, и приложение должно продолжать его запрашивать (и кэшировать его каким-то образом). Если у вас уже есть эта инфраструктура в виде базы данных, это нормально. Если нет, то представить его для этой цели было бы абсурдно. –

0

Я думаю, что «стол решение» имеет более гибкий подход: 1. Вы можете управлять данными и соединительными свойствами 2. Вы можете работать с таблицей непосредственно 3. Вы можете создать связанную карту, основанную на таблицах БД))

0

Я бы, конечно, не использовал их в качестве констант в коде. Имена могут меняться, в то время как страны могут быть созданы, слияние, исчезновение и т. Д.

Если вы уже используете базу данных, добавление этого может иметь смысл. Во-первых, он гарантирует, что коды, которые могут храниться с данными клиента, действительны с точки зрения вашего кодового списка. Поэтому, если страна исчезает, но запись клиента по-прежнему относится к ней, данные остаются действительными.

Убедитесь, что ваш пользовательский интерфейс загружает и кэширует список; не нужно делать запрос каждый раз, если вы можете его избежать.

Кстати, правильная обработка стран в интернационализированной заявке намного сложнее, чем просто переименование. Например, если страна или часть страны объявляют независимость, некоторые страны признают ее, а другие - нет.

1

Различные методы имеют свои преимущества и недостатки:

База данных:

  • позволяет использовать данные по стране в запросах
  • данные могут быть изменены без повторного приложения
  • редактирование данных требует, чтобы вы писали какой-то интерфейс или выполняли его вручную через какой-либо общий браузер SQL
  • требует код доступа к базе данных, и какую-то стратегию кэширования
  • Любая логика страны на основе в коде может привести к поломке при изменении БД, или должно быть отражено в БД

XML:

  • Очень легко редактировать
  • может быть изменена без перекомпиляции приложения, но изменения должны быть развернуты как-то
  • Требуется разбор кода и какой-то с ноющая стратегия
  • Любой логика страны на основе в коде может привести к поломке при изменении XML, или должна быть отражены в XML

Код:

  • Легко редактировать - для разработчиков
  • изменений требуют компиляции и развертывание
  • не требуют дополнительных техническим слоев
  • кодекса и сотрудничества untry данные не могут выйти из синхронизации

В целом, решение «код в виде данных» действительно самый хороший, если развернуть шаг компиляции & для каждого изменения является приемлемым для вас. Другие решения создают накладные расходы и дублирование структуры (или даже логики) - и нет, они не волшебным образом делают это «безопасным» для внесения изменений в последнюю минуту «потому что это не код». Код - это данные, а данные - это код.

Смежные вопросы