2014-03-04 32 views
0

   嗨,JPA 2:数据存储或外部数据库?

   我想获得一个想法有关至极数据存储解决方案,用于存储在用JAVA写的(JSF 2.1)的应用程序引擎中的应用。 我想使用15左右的几张桌子,有很多互动。我是否应该使用JPA 2中通常的数据存储,但没有(多对多)关系,还是应该使用永久数据库存储?

  Google云sql seam成为最佳解决方案with JPA 2来坚持数据,但它不是免费的。


 随着the datastore and JPA 2,我们不能建立多对多的关系,但我们不能做到这一点与2“一对多”的关系? 例如:

  • 飞机和一些乘客。一架飞机可以拥有许多乘客,而一名乘客可以使用许多飞机。 我们可以将它翻译为关系:飞机许多乘客。而在数据存储,我们应该像PLANE一个其存储到很多TICKET多对一乘客


非常感谢您的回答:))

+0

对于我来说,数据存储是根据sql支付的正确解决方案。您可以创建一对多和多对一的方式: “数据存储区可以本机保留包括密钥在内的简单类型的集合,这为定义一对多(和多对多)关系创建了一种方法。”这是从物化文件。一旦你理解了数据存储,你会看到它的使用有多容易。首先尝试使用JDO进行CRUD操作,以了解基本知识并将您的项目转换为使用对象化。 – makkasi

+0

GAE/Datastore JDO/JPA确实支持无文件(普通JPA)M-N关系,正如他们的文档所述。引用JPA1文档不帮助您的情况 – DataNucleus

回答

0

如果你喜欢一个免费的Java AppEngine数据存储解决方案,认真考虑AppEngine Datastore。如果您对意见持开放态度(对不起,对StackOverflow没有真正意义上的主题),我将JDO和JPA视为低级数据存储API顶层的抽象层的印象是,它们不值得使用,尤其是随着应用程序复杂性的增加。阅读以前有关这些API的StackOverflow问题,以获得您可能遇到的各种问题的印象。至少低级数据存储API可以让你联系最终要完成工作的代码。

在我看来,最难的工作是重新设计基于关系假设的应用程序功能(请参阅相关的SO问题)。你很清楚,多对多关系对Datastore来说是不可行的。 NoSQL方法可能会导致数据重复(冗余而不是正常形式)和最终的一致性。这可能会与你的SQL期望冲突,但不用担心,这种改变是值得的。您的例子是与乘客以及航班相关的机票在数据存储中使用三种货币即可。将关系限制移入应用程序代码中,例如,如果该乘客的机票存在,则不要删除乘客。

+0

感谢您的完整答案。 – BenjD90

相关问题