Генерация XML против базы данных XML - PullRequest
0 голосов
/ 12 августа 2010

В настоящее время я использую Hibernate для сохранения сущностей в моем приложении и возвращаю их своим пользователям в виде XML. Однако это означает, что каждый раз, когда ресурс является запросом, я в настоящее время генерирую XML через Java, что неэффективно по многим причинам. Мне было интересно, хочу ли я, возможно, создать кэш объектов Document во время работы приложения (то есть пакетной загрузки всех объектов как объектов Document) или использовать базу данных на основе XML в дополнение к MySQL / Hibernate ...

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Вы можете использовать любое решение для кэширования - например, Ehcache или OSCache :

  • когда клиент запрашивает xml, выполнить поиск в кэше (предположительно по идентификатору объекта)
  • если документ не найден в кеше, извлеките его из БД и преобразуйте в XML, затем сохраните в кеше и верните его
  • всякий раз, когда объект изменяется, аннулировать его запись в кэше

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

0 голосов
/ 12 августа 2010

На всякий случай обратите внимание, что Hibernate позволяет работать с данными XML.Из Глава 18. Отображение XML :

Hibernate позволяет работать с постоянными данными XML практически так же, как вы работаете с постоянными объектами POJO.Анализируемое дерево XML можно рассматривать как другой способ представления реляционных данных на уровне объекта вместо POJO.

Hibernate поддерживает dom4j в качестве API для манипулирования деревьями XML. Вы можете написать запросы, которые извлекают деревья dom4j из базы данных , и любые изменения, которые вы вносите в дерево, автоматически синхронизируются с базой данных.Вы даже можете взять XML-документ, проанализировать его с помощью dom4j и записать его в базу данных с помощью любых основных операций Hibernate: persist (), saveOrUpdate (), merge (), delete (), replicate () (объединение еще не выполненоподдерживается).

Эта функция имеет множество приложений, включая импорт / экспорт данных, экстернализацию данных сущностей через JMS или SOAP и создание отчетов на основе XSLT.

Одно сопоставление может использоваться для одновременного сопоставления свойствкласса и узлов документа XML в базу данных, или, если нет класса для сопоставления, его можно использовать для сопоставления только XML.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...