2012-07-13 57 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