gpt4 book ai didi

serialization - 将我的 POJO 保存到 Jackrabbit JCR 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 03:02:58 25 4
gpt4 key购买 nike

在 Jackrabbit 中,我体验了两种将 POJO 保存到存储库节点以存储在 Jackrabbit JCR 中的方法:

  • 写我自己的层
  • 使用 Apache Graffito

  • 事实证明,编写我自己的代码既费时又费力(不得不编写和运行许多丑陋的自动化测试),但非常灵活。

    使用 Graffito 令人失望,因为它似乎是一个“死”的项目 stuck in 2006

    有哪些更好的选择?

    最佳答案

    另一种选择是完全跳过 OCM 框架并简单地使用 javax.jcr.Node作为一个非常灵活的 DAO 本身。 OCM 框架存在的根本原因是,使用 RDBMS,您需要从对象到关系模型的映射。使用 JCR,它已经非常面向对象(节点 ~= 对象),这个根本原因就没有了。剩下的就是使用 DAO,您可以限制程序员可以在其代码中访问的内容(包括自动完成的帮助)。但是这种方法并没有真正利用 JCR 概念,这意味着无模式和灵活的编程。直接在您的代码中使用 JCR API 是遵循该概念的最佳方式。

    想象一下,您想在应用程序生命周期的后期向现有节点/对象添加新属性 - 使用 OCM 框架,您还必须修改它并确保它仍然正常工作。通过直接访问节点,它只是一个单点更改。我知道,这是解决例如拼写错误问题的好方法。属性名称;但是这种恐惧并没有真正得到现实的支持,因为在大多数情况下,当您测试您的应用程序时,您会很快注意到拼写错误或不匹配的名称。一个好的解决方案是为公共(public)节点或属性名称使用字符串常量,即使您在它们之间公开 JCR API,也可以将其作为 API 的一部分。这仍然使您可以灵活地快速添加新属性,而无需采用 OCM 层。

    为了对允许或强制(即“半模式”)有一些限制,您可以使用节点类型和混合(从 JCR 2.0 开始,您还可以更改现有内容的节点类型):因此您可以完全处理这个在存储库级别,不必关心应用程序代码中的类型和约束——除了捕获异常;-)

    但是,当然,这种选择取决于您的要求和个人喜好。

    关于serialization - 将我的 POJO 保存到 Jackrabbit JCR 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/370557/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com