2008-09-17 3 views
2

У меня есть webapp, чья исходная база кода была разработана с помощью файла отображения hibernate с ручной обработкой. С тех пор я стал достаточно опытным в «кодировании» моего файла hbm.xml. Но все классные дети используют аннотации в эти дни.Стоит ли пытаться переместиться из файла картографирования hibernate вручную в аннотации?

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

Под вопрос, сколько усилий будет? Мне нравятся мои базы данных скудные и средние. Отображение охватывает только дюжину объектов домена, включая два набора, некоторое подклассов и около 8 таблиц.

Спасибо, дорогие Сопедисты, заранее за ваши обоснованные мнения.

ответ

7

«Если это не сломано - не исправляйте это!»

Я вообще-то старомодный парень POJO/POCO, но зачем менять аннотации, чтобы быть круто? Насколько я знаю, вы можете сделать большую часть материала в виде аннотаций, но более сложные сопоставления иногда более четко выражаются как XML.

4

Одна вещь, которую вы получите от использования аннотаций вместо внешнего файла сопоставления, заключается в том, что ваша информация о сопоставлении будет отображаться в классах и полях, что улучшает ремонтопригодность. Вы добавляете поле, вы сразу добавляете аннотацию. Вы удаляете его, вы также удаляете аннотацию. вы переименовываете класс или поле, аннотация находится прямо там, и вы также можете переименовать таблицу или столбец. вы вносите изменения в наследование классов, это учитывается. Некоторое время спустя вам не нужно идти и редактировать внешний файл. это делает все более эффективным и менее подверженным ошибкам.

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

0

Все функции поддерживаются как в XML, так и в аннотациях. Вы по-прежнему сможете переопределить свои аннотации с помощью объявления xml.

Что касается усилий, я думаю, что это того стоит, так как вы сможете увидеть все в одном месте и не переключаться между вашим кодом и xml-файлом (если только вы не используете два монитора;))

0

Единственное, что вы получите от использования аннотаций

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

2

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

3

Я недавно сделал как в проекте, и обнаружил:

  1. Я предпочитаю писать аннотации к XML (хорошо играет со статической типизацией Java, автозаполнение в IDE, рефакторинг и т.д.). Мне нравится видеть все, что соткано, а не переходить между кодом и XML.
  2. Кодирует данные db в ваших классах. Некоторые люди считают это грубым и неприемлемым. Я не могу сказать, что это беспокоило меня. Он должен идти куда-то, и мы собираемся перестроить ВОЙН для изменения независимо.
  3. Мы действительно проделали весь путь до аннотаций JPA, но есть определенные случаи, когда аннотации JPA недостаточно, поэтому им пришлось использовать либо аннотации Hibernate, либо config для настройки.
  4. Обратите внимание, что вы можете использовать как аннотации, так и файлы hbm. Может быть, хороший гибрид, который указывает O-часть в аннотации и R-часть в hbm-файлах, но звучит как больше проблем, чем того стоит.
1

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

0

«Если это не сломано - не исправляйте это!»

@Macka - Спасибо, мне нужно было это услышать. И спасибо всем за ваши ответы.

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

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

+0

Это всегда легко проповедовать другим - я просто надеюсь, что я буду принимать мои собственные советы в будущем :) – BigJump 2008-09-18 19:28:43

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

  • Нет связанных вопросов^_^