2015-08-23 47 views
0

我已经将jack rabbit与Oracle数据库集成在一起,并且我使用Jackrabbit存储数据,如果我不想使用Jackrabbit 检索数据,我可以以何种方式获取数据。在数据库中数据存储在 blob类型。如何在不使用apache jackrabbit数据存储的情况下从数据库中检索数据?

+0

简短的回答是,你不能。如果您需要直接访问数据库中的数据,请考虑使用例如。一个ORM框架。 – TedTrippin

+0

@TedTrippin一个ORM框架是封装了一点(或更多)抽象的代码。但是这段代码最终还需要通过JDBC访问数据库,那么为什么OP还不能用自己的自定义代码来完成呢?他应该能够研究http://jackrabbit.apache.org/jcr/object-content-mapping.html的代码,然后可以获取内容,尽管可能不是一个,而是每个文档的多个查询,这些功能在Oracle中受到支持,并且可能使事情变得更简单。我想这会是“长期的答案”? –

+1

如果OP必须达到这些长度,那么他们选择了错误的技术。我的观点是,通过使用ORM,可以直接从数据库直接访问数据,而无需“学习代码”并编写自定义代码。 – TedTrippin

回答

0

正如@TedTrippin上面已经提到的,一个ORM框架将使事情变得更加简单。但如果你真的想手动在Oracle中做到这一点,该方法是:

研究的OCM http://jackrabbit.apache.org/jcr/object-content-mapping.html的代码,然后根据从Oracle协会的逻辑关系获取内容,很可能在一个没有,但每个文档多个查询;最终使用用户定义的函数,这些函数在Oracle中受支持并可能使事情变得更容易。

很想知道你的问题的背景。你用“Spring”和“CMS”标记了它。我看不出有什么理由要直接从Oracle访问数据,这很乏味。如果您想为外部系统提供内容的API,或者如果您丢失了曾经在前面的CMS,并且只使用Jackrabbit repo作为内容存储库,则仍然可以使用此类ORM/OCM框架独立使得更容易访问数据。

1

的方式兔崽子存储在数据库中的数据是一个实现细节,它不会神奇地映射到一个“好” DB模式这一点,如果这是你的意思。 (层次性和所有JCR功能使这成为不可能)。这有点像拥有一个Unix文件系统,然后询问如何从文件系统实现中读取低级别的inode等 - 你真的不应该这样做。

最后但并非最不重要的一点是,虽然它没有运行(除了Jackrabbit集群设置),但必须写入DB(由Jackrabbit使用的表),因为这很容易导致数据损坏。

相关问题