Быстрый ответ: JAXB, JPA и Spring
При вставке XML в базу данных необходимо учитывать, какие операции вы хотели бы выполнить с данными, которые представляет XML.
Вы можете, например, считать XML входными данными, а затем создать схему, в которой эти данные будут легко запрашиваться.Если это то, что вы хотели бы сделать, тогда используйте JAXB в качестве демаршаллера, потому что вы можете легко генерировать подходящие аннотированные pojos / entity из XSD с помощью инструмента xjc.Немного дополнительной аннотации JPA, и вы получите быстрое решение, которое отображает XML в полную схему, которая позволяет выполнять различные запросы и альтернативные представления.Конечно, аннотации JAXB могут использоваться для генерации большого количества выходных форматов (XML, JSON, YAML и т. Д.), Поэтому вы не ограничены XML, когда хотите вывести эти данные.
Далее, вы можете рассматривать XML как целостную сущность, которую вы хотите сохранить.В этом случае вы хотите сохранить его как CLOB или как XML (в Oracle). Oracle, безусловно, поддерживает поиск на основе XPath, так что вы получите хорошую возможность для запроса результирующего набора данных.
Наконец, если вы думаете, что XML слишком раздут, и вы вКонтроль любых результирующих изменений в pojos вы можете сериализовать unmarshalled pojos непосредственно в базу данных как BLOB.У вас будет довольно компактная схема и база данных, но вы будете страдать, когда дело доходит до запросов, поскольку все они будут двоичными.И позже у вас возникнут проблемы совместимости двоичных версий, если вам придется десериализовать очень старый набор данных, основанный на старых pojos.
Итак, подведем итог: JAXB - очень хороший способ обработки процессов демаршаллинга и последующих маршаллинга.,Это быстро и просто и (кивок @ Blaise Doughan здесь) очень хорошо поддерживается на SO с одной стороны.JPA - это технология выбора для выполнения операций с вашей базой данных.Hibernate является одним из разработчиков JPA (с хорошими расширениями), и Spring прекрасно поддерживает его с помощью HibernateTemplate.Точно так же вы можете использовать Spring JpaTemplate, у которого, возможно, немного меньшая кривая обучения.