代码之家  ›  专栏  ›  技术社区  ›  Manius

JDO和JPA之间的“低风险”选择是什么?

  •  1
  • Manius  · 技术社区  · 14 年前

    不要将此作为其他问题的副本关闭,因为 我不是问同样的问题 . 他们也有一岁左右。也就是说,看看这些链接:

    http://db.apache.org/jdo/jdo_v_jpa.html

    http://www.datanucleus.org/products/accessplatform/jdo_jpa_faq.html

    http://www.datanucleus.org/products/accessplatform/persistence_api.html

    似乎JPA是由大供应商支持的“热门”选择(如果可以的话,他们喜欢把你搞砸)。 似乎JDO是一个更成熟,更优越的选择 应该 享受更多OSS社区支持。(是吗?)

    那么什么是 低风险容忍度 组织应该做什么?从一个到另一个的困难是相同的吗?在这一点上,一个已经开始超越另一个了吗?另外,仅仅因为我们现在使用它,Hibernate是否只将您限制为JPA?如果是,那么最流行的JDO实现是什么?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Stephen C    14 年前

    @十字军战士-是什么让你觉得有人比你有更好的水晶球?

    那么,一个低风险容忍组织应该做什么呢?

    选择替代方案 确定为低风险解决方案。它如何确定哪种解决方案风险最小…不清楚的。。。但我不认为这样问是一个有效的风险评估程序。

    另一点是,当JPA是“赢家”(反之亦然)时选择JDO可能不会在短期或长期内扼杀您的项目。做出错误选择的后果很可能仅限于员工培训成本的增加,以及停留在基础ORM平台上,在该平台上开发停滞,支持成本越来越高。[我会选择一个开放源代码ORM平台来保护自己不受后者的影响…无论哪种方式。

    从一个到另一个的困难是相同的吗?

    可能是的。尤其是在考虑数据迁移问题时。

    在这一点上,一个已经开始超越另一个了吗?

    JPA如今似乎占据了主导地位。JDO的人会说他们的方法在技术上优越,但这不是重点。

    另外,仅仅因为我们现在使用它,Hibernate是否只将您限制为JPA?

    JPA加上特定于休眠的扩展。当然,Hibernate不支持JDO,它可能永远也不支持。

    如果是,那么最流行的JDO实现是什么?

    通过。

        2
  •  0
  •   Volksman    13 年前

    如果您使用一个轻量级的依赖注入和ORM包装框架(如开源expojo),它允许您完全绕过这个问题。您的主要代码库仍然完全不可知底层持久性接口/技术(JDO、当前支持的Hibernate实现、JPA正在进行中——是否愿意帮忙?).

    所有特定于持久性技术的代码都被封装在存储库和服务类中,正如Chris Richardson的优秀著作“Pojos in Action”所述,并使用他在书中讨论的“Exposed Domain Model”模式进行公开—结果证明这是非常棒的,也是我使用过的最有效的方法。

    使用expojo 99%的代码可以在JDO、JPA、Hibernate Plus之间保持出色的即时可移植性,作为额外的好处,您可以获得非常轻量和非常简单的依赖项注入(不需要注释或XML)。

    它有自己的非常轻量和易于使用的servlet过滤器,可以提供“开放会话/持久性管理器/视图中的实体管理器”,而不需要XML外壳。每个HTTP请求都自动附加到ModelExposer对象,该对象提供对存储库和服务组件的方便访问,这些组件允许对对象进行一般访问。

    EXPOJO在 http://www.expojo.com -是的,好吧,我写的,所以我有点偏见=]