Для встроенного программирования, с помощью const
рассудительно при объявлении глобальных структур данных может сохранить много RAM, заставив постоянные данные быть расположенным в ROM или флэш-памяти, не копируя в RAM во время начальной загрузки.
В повседневном программировании, с помощью const
тщательно помогает Вам постараться не писать программы, которые отказывают или ведут себя непредсказуемо, потому что они пытаются изменить строковые литералы и другие постоянные глобальные данные.
При работе с другими программистами на крупных проектах, использовании const
правильно помогает препятствовать тому, чтобы другие программисты регулировали Вас.
Нет никаких функциональных причин для отказа от аннотации одного и того же класса с помощью аннотаций JPA и JAXB, I Сам делал это иногда. Тем не менее, это становится немного трудным для чтения, и иногда вам нужны различные компромиссы при проектировании классов с JAXB и JPA. По моему опыту, эти компромиссы обычно означают, что в итоге вы получаете две модели класса.
There is no problem in using both annotations on the same class. I even tend to encourage this, because thus you don't have to copy-paste when changes occur.
In some cases, some properties differ in behaviour - for example an auto-generated ID might not be required to be marshalled. @XmlTransient
and @Transient
are then combined. It does become a bit hard to read, but not too hard, because it is obvious what all the annotations mean.
Я согласен, что использование одинаковых классов моделей - правильный подход. Если вас беспокоит беспорядок аннотаций, вы можете использовать реализацию JAXB (например, EclipseLink JAXB), которая предоставляет механизм для экстернализации метаданных:
Также, поскольку вы используете модель JPA, EclipseLink JAXB (MOXy) имеет расширения для облегчения этой задачи:
Вот пример использования одной модели с JAXB и JPA для создания RESTful сервиса: