我已经学习了3个月的Java Spring Hibernate MVC,并且对此有了很好的理解。但是,我不明白JCR是什么意思。 我的意思是,在我的简单Spring MVC网站中,哪些部分可以使用JCR来完成。
JCR是替代JPA(Hibernate)的另一种持久性机制,它将JDBC隐藏在应用程序之外。理论上,您现有模型中的Java类可能保持不变。但是,如果您的模型中有任何类仅因为需要为JPA建模一些较低级别的数据结构而产生,则这些类在使用JCR时可能不再需要。您需要一个充分的理由来用JCR取代现有的JPA。例如,您可能已经发现使用JPA需要跳过很多额外的步骤并做一些您实际上不需要做的事情。话虽如此,JCR确实具有一些优点和功能,这些优点和功能在JPA中没有: JCR支持结构化数据、非结构化数据和介于两者之间的所有内容。JCR允许灵活的架构,并且可以非常类似于NoSQL。而JPA则非常结构化,具有固定的架构。 JCR是分层的——某些用例非常分层,用关系模型实现这一点可能非常困难和昂贵。 JCR内置事件 大多数JCR实现可以将内容存储在各种系统中。有些甚至可以访问和联合其他系统中的现有内容。 字符串值没有长度限制 JCR支持全文搜索 JCR具有多种查询语言,包括JCR-SQL2(非常类似于SQL) 有一些库将Java类映射到节点结构中,因此非常类似于JPA/Hibernate 一切都取决于这些特性是否对您的应用程序有益。
Java内容库(JCR)试图以一种与实现无关的方式解决这些问题(以及其他许多问题); 也就是说,API将不受基础资源(例如数据库,本地或虚拟文件系统等)的影响而保持相同。作为数据存储的顶层,JCR提供内容服务,如细粒度访问控制、版本控制、内容事件、全文搜索和过滤等。在由Day Software领导的JSR-170背后有一个令人印象深刻的专家小组,包括Vignette、Hummingbird Ltd.、Stellent等内容管理系统(CMS)供应商以及BEA Systems、IBM和Oracle等通常的Java驱动解决方案提供商,该规范很可能成为内容管理和文档存储的事实标准。