2011-06-17 42 views
1

我来自网页开发背景,并且在相当长一段时间内没有在Java中做过任何重要的事情。J2SE桌面应用程序 - JPA数据库vs集合?

我正在做一个小项目,其中大部分涉及一些模型与关系和简单的CRUD操作与这些对象。

JPA/EclipseLink似乎适合这个问题,但这是一种具有文件 - >打开和文件 - >保存功能的应用程序,即数据将被用户存储在文件中,而不是持久存在数据库会话之间。

上次我在这样一个项目上工作时,我将对象存储在ArrayList对象中,但是之前使用过MVC框架,因为这似乎有点原始。另一方面,使用JPA,打开文件需要在数据库中加载一大堆对象,只是为了不必编写代码来管理对象。

使用Java SE桌面应用程序管理模型数据的典型方法是什么?

+0

是否给出了数据库模式,或者您可以选择做这项工作所需的任何东西? –

+0

不太确定你的意思,有一个与应用程序目的有关的模式。一些一对一和一对多的关系将会变得如此复杂。 – bcoughlan

回答

2

JPA专门用数据库构建。这意味着它通常在大型数据存储上运行,而对象属于许多不同的用户。

在基于文件的场景中,很多时候文件并不那么大,文件中的所有对象都属于同一用户和同一文档。在那种情况下,我会说对于二进制格式,旧的Java序列化仍然适用于临时文件。

对于长期或可互换的格式,XML更适合。使用JAXB(包含在标准Java库中),您可以使用表面上类似于JPA的基于注释的方法对Java对象进行编组和解组。实际上,我已经使用了具有JPA和JAXB注释的模型对象,因此它们可以存储在数据库以及XML文件中。

如果您的桌面应用程序使用的文件代表可能需要分页和查询的庞大数据集,那么使用JPA可能仍然是更好的选择。虽然我不知道让数据源指向用户选择的文件是多么简单,但可用于Java的各种小型嵌入式数据库。通常,Java中的持久性单元映射到固定的数据源,并且您不能即时创建持久性单元。

还有一种选择是使用JDO,这是一种映射技术,如JPA,但不是ORM。它更独立于正在使用的后端持久性技术,而且实际上也映射到文件。

对不起,这不是一个真正的答案,但更像是一些需要考虑的事情,但希望它有助于某种方式。