J2SE桌面应用程序 - JPA数据库与集合?

时间:2011-06-17 22:04:08

标签: orm jpa java

我来自Web开发背景,并且在相当长的一段时间内没有在Java中做过任何重要的事情。

我正在做一个小项目,其中大部分涉及一些具有关系的模型以及与这些对象直接进行的CRUD操作。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

很抱歉这不是一个真正的答案,但更像是要考虑的一些事情,但希望它在某种程度上有所帮助。