JCR будет альтернативным механизмом сохранения, используемым вместо JPA (Hibernate), который скрывает JDBC от вашего приложения. Теоретически, классы Java, которые есть в вашей модели, могут остаться такими же, как сейчас. Однако если какие-либо классы в вашей модели появились только потому, что вам нужно смоделировать некоторые структуры данных более низкого уровня для JPA, то эти классы могут не понадобиться с JCR.
Вам понадобится веская причина для замены существующего использования JPA на JCR. Например, вы, возможно, обнаружили, что использование JPA требует перепрыгивания через множество дополнительных обручей и выполнения действий, которые вам на самом деле не нужны.
Сказав это, JCR, безусловно, обладает некоторыми преимуществами и возможностями, которых нет в JPA:
- JCR поддерживает структурированные данные, неструктурированные данные и все, что между ними. JCR допускает гибкую схему и может быть очень NoSQL-иш. JPA очень структурирован, с фиксированной схемой.
- JCR является иерархическим - некоторые варианты использования являются чрезвычайно иерархическими, и сделать это с помощью реляционной модели может быть очень сложно / дорого
- JCR имеет встроенные события
- Большинство реализаций JCR могут хранить контент в различных системах. Некоторые могут даже получить доступ и объединить существующий контент в других системах.
- Без ограничения длины строковых значений
- JCR поддерживает полнотекстовый поиск
- JCR имеет несколько языков запросов, включая JCR-SQL2 (очень похожий на SQL)
- Есть некоторые библиотеки, которые отображают классы Java на ваши структуры узлов и, таким образом, очень похожи на JPA / Hibernate
Все зависит от того, полезны ли эти функции для вашего приложения.