Стоит ли тратить усилия на переход от созданного вручную файла отображения гибернации к аннотациям?

StackOverflow https://stackoverflow.com/questions/82223

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть веб-приложение, исходная кодовая база которого была разработана с использованием файла отображения гибернации, созданного вручную.С тех пор я стал довольно опытным в "кодировании" моего hbm.xml файла.Но в наши дни все крутые ребята используют аннотации.

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

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

Заранее благодарю, дорогие соотечественники, за ваши обоснованные мнения.

Это было полезно?

Решение

"Если он не сломался - не чини его!"

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

Другие советы

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

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

Недавно я сделал и то, и другое в проекте и нашел:

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

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

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

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

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

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

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

"Если он не сломался - не чини его!"

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top