我有web开发背景,已经有很长一段时间没有用Java做任何有意义的事情了。
我正在做一个小项目,其中大部分涉及到一些带有关系的模型和对这些对象的直接CRUD操作。
JPA/EclipseLink似乎适合这个问题,但这是一种具有文件->打开和文件->保存功能的应用程序,即数据将由用户存储在文件中,而不是在会话之间持久存储在数据库中。
上一次我做这样的项目时,我将对象存储在ArrayList对象中,但后来使用了MVC框架,这似乎有点原始。另一方面,使用JPA打开一个文件需要在数据库中加载一大堆对象,这样就不必编写代码来管理这些对象。
使用Java桌面应用程序管理模型数据的典型方法是什么?
发布于 2011-06-18 06:54:06
JPA在构建时特别考虑到了数据库。这意味着它通常在一个大型数据存储上操作,其中的对象属于许多不同的用户。
在基于文件的场景中,文件通常不是那么大,文件中的所有对象都属于同一用户和同一文档。在这种情况下,我认为对于二进制格式,旧的Java序列化仍然适用于临时文件。
对于长期或可互换的格式,XML更适合。通过使用JAXB (包含在标准Java库中),您可以使用一种基于注释的方法将Java对象编组和反编组到XML,这种方法在表面上类似于JPA。实际上,我曾经使用过同时具有JPA和JAXB注释的模型对象,因此可以将它们存储在数据库和XML文件中。
但是,如果您的桌面应用程序使用的文件表示您需要分页和查询的潜在巨大数据集,那么使用JPA可能仍然是更好的选择。Java提供了各种小型嵌入式DB,尽管我不知道让数据源指向用户选择的文件有多简单。通常,Java中的持久化单元映射到固定的数据源,您还不能动态创建持久化单元。
另一种选择是使用JDO,这是一种类似于JPA的映射技术,但不是一种对象关系映射。它更加独立于正在使用的后端持久化技术,实际上也映射到文件。
很抱歉,这不是一个真正的答案,但更像是一些需要考虑的事情,但希望它能在某种程度上有所帮助。
https://stackoverflow.com/questions/6392307
复制相似问题