2012-07-13 61 views
1

我的目标是在Jackrabbit内存储关于项目的信息。每个项目可以由多个子项目组成,其中附有与项目相关的文件/文件。JCR:Jackrabbit OCM - 二进制数据和延迟加载

考虑以下结构:

-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时,将二进制数据(文件,文档,图像)附加到项目的最佳方式是什么?

(不幸的是,兔崽子OCM文件是不是真的详细)

回答

4

对于延迟加载,你可以在豆或集合注释指定proxy=true实现这一目标。

二进制数据可以表示为jcr:data属性nt:resource所以映射看起来像这样。

@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; 
} 

确实OCM的文件没有更新,但你可以找到/org/apache/jackrabbit/ocm/config/jackrabbit-ocm-1.5.dtdsrc/main/resources下的源代码分发的有用信息。

HTH,

+0

谢谢,这帮了我:-) – micha 2012-07-17 17:26:37