JCR:Jackrabbit OCM - 二进制数据和延迟加载

时间:2012-07-13 20:20:33

标签: jackrabbit jcr

我的目标是在Jackrabbit中存储有关项目的信息。每个项目都可以包含多个子项目,其中附有与项目相关的文件/文档。

考虑以下结构:

-project 1
 -project 1.1
 -project 1.2
  -project 1.2.1
  -project 1.2.2
-project 2

我有一个代表每个项目的java类,如下所示:

public class Project {

  @Field
  private String name;

  @Collection
  private List<Project> subprojects;

  // more properties + getter/setter
}

我的问题是:

  • 是否有类似于ORM工具的延迟加载?例如:当我想获得有关project 1的信息时,我不需要子项目的所有信息。什么是实现这一目标的最好方法?
  • 使用OCM时,将二进制数据(文件,文档,图像)附加到项目的最佳方法是什么?

(不幸的是,Jackrabbit OCM文档并不是非常详细)

1 个答案:

答案 0 :(得分:4)

对于延迟加载,您可以通过在Bean或Collection注释中指定proxy=true来实现此目的。

二进制数据可以表示为jcr:data的{​​{1}}属性,因此映射看起来像这样。

nt:resource

确实OCM的文档未更新,但您可以在源代码分发中的@Node(jcrType = "nt:resource") public class ResourceModel extends MimeTypeModel { @Field(path = true) String path = null; @Field(jcrName = "jcr:data") java.io.InputStream jcr_data = null; } 下找到/org/apache/jackrabbit/ocm/config/jackrabbit-ocm-1.5.dtd下的有用信息。

HTH,