Репозиторий Jackrabbit и связанный с ним стандарт JSR для репозиториев содержимого Java сами по себе предоставляют довольно низкоуровневый API сохранения, который вы, вероятно, могли бы использовать для создания репозиториев для объектов домена, сопоставляя данные со структурами репозитория, такими как узлы/свойства JCR. Вы будете использовать API JCR, расположенный в пакете javax.jcr.*, для управления репозиторием (и для максимальной переносимости). В предложении вы можете использовать Jackrabbit для замены вашей базы данных.
Быстрый поиск в Google показал, что действительно есть проекты, которые стремятся предоставить удобные оболочки, аналогичные тем, которые вы, вероятно, знаете и любите для JDBC и Hibernate, только для JCR. Например, я нашел проект Spring Modules: http://java.net/projects/springmodules/, который последний раз, к сожалению, обновлялся около двух лет назад, поэтому он все еще находится на JCR 1.0. Для примера использования взгляните на http://java.net/projects/springmodules/sources/svn/content/trunk/samples/jcr/src/org/springmodules/examples/jcr/JcrService.java?rev=2110 Тем не менее, вы, вероятно, могли бы написать свой собственный JCR2Template без особых усилий и инкапсулировать повторяющиеся задачи, такие как подключение и обработка исключений, с помощью шаблона Template Method.
Что касается сопоставления запросов, вы можете запустить JCR на отдельном сервере, как и в случае с реляционной базой данных, и подключиться к ней через RMI. Вот пример: http://dev.day.com/content/docs/en/crx/current/developing/accessing_jcr_connectors.html Я бы посчитал это «чистым» способом использования JCR в приложениях Spring MVC.
Что касается части сохранения WebDAV... Я знаю, что Jackrabbit действительно поддерживает монтирование репозиториев в виде дисков WebDAV, но у меня нет с этим никакого опыта, и я, честно говоря, не могу представить, как сказать Word загрузить файл при редактировании где-то... Но я вообще не специалист по Word, извините....
Теперь... Apache Sling Framework, с другой стороны, предлагает интересный подход к созданию приложений RESTful, которые хорошо интегрируются с моделью репозитория и некоторыми абстракциями структуры репозитория более высокого уровня. Однако способ разрешения сервлетов в Sling полностью отличается от обычного Spring MVC (см. http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file), поэтому было бы немного работать над согласованием обоих подходов.
Надеюсь, там есть какая-то информация, которую вы можете использовать.
С уважением, Йоханнес
person
Johannes
schedule
24.08.2011