Не думаю, что на ваш вопрос есть однозначный ответ. Но я могу дать вам несколько нелегких советов. Вот некоторые вещи для рассмотрения:
Требуется много времени для написания кода маршалинга и деинсталляции, особенно в первый раз.
Вам придется потратить немало времени на изучение нюансов вашей библиотеки DOM (Xerces или ее эквивалента).
Существует много дубликатов, поэтому в конечном итоге вы будете вынуждены написать несколько вспомогательных классов.
Вам потребуется множество модульных тестов, чтобы убедиться, что вы охватили все свои базы в области необязательных элементов и атрибутов.
Глядя на этот список, довольно легко сказать: «Это то, что JAXB делает для меня». Проделав это на протяжении нескольких лет, я бы сказал, что JAXB экономит вам немало времени и усилий, особенно последняя итерация JAXB в Java 5/6.
Но если вы пойдете с JAXB, есть один урок, который мы усвоили на своем нелегком пути:
*** Не позволяйте сгенерированным JAXB классам просачиваться в ваше приложение.
Как вы сказали в своем вопросе, это связывает все ваше приложение с тем, как JAXB работает. Если JAXB придется заменить (есть ряд причин, по которым вы могли бы сделать это в будущем), тогда вы столкнетесь с трудной и болезненной задачей (поверьте мне, мы сделали это, и мы никогда не будем заниматься этим положение снова).
Теперь мы всегда скрываем сгенерированные JAXB классы за фасадом или фабрикой, сопоставляя классы JAXB с нашими POJO-доменами с требуемым поведением. Мы думаем о JAXB так же, как и JDBC; JAXB - это просто еще один источник данных, еще один способ получения данных в POJO нашего домена. Доменные POJO являются секретным соусом, и мы контролируем, как они кодируются и как они используются. JAXB - это просто инструмент для маршалинга и демаршаллинга.