我想使用Hibernate将持久化对象保存到文件系统,而不需要使用SQL数据库。
这种做法可行吗?
我想使用Hibernate将持久化对象保存到文件系统,而不需要使用SQL数据库。
这种做法可行吗?
看起来如果使用JDBC纯文本驱动程序可能是技术上可行的;然而,我还没有看到任何开源软件提供写入访问权限; 我在sourceforge上找到的一个只支持读取。
Hibernate和其他JPA提供程序(如EclipseLink)将此实体模型转换为SQL。他们使用JDBC驱动程序提供与SQL数据库的连接。因此,您需要保留它。
正确的问题是:是否有人知道一种嵌入式Java SQL数据库
,可以从Java中启动?这样的数据库有很多,在本主题中提到:
我曾在一个小数据项目中使用HyperSQL,在一个具有巨大数据库(2Gb甚至更多)的项目中使用Apache Derby。Apache Derby 在这些巨大的数据库上表现更好。
我不确定您的具体需求,但可能是以下之一:
1 - 如果您只是想摆脱SQL,可以使用NoSQL数据库。
Hibernate通过Hibernate OGM支持它(http://www.hibernate.org/subprojects/ogm)。
有一些数据库,如Cassandra、MongoDB、CouchDB、Hadoop...您可以在这里找到一些建议Here。
2 - 现在,如果您不想使用数据库服务器(始终运行服务进程),可以使用Apache Derby。它就像任何其他SQL一样,但不需要服务器。它使用一个单独的文件来保存数据。您可以轻松地将所有数据库与程序一起传输。
看一下:http://db.apache.org/derby/
3 - 如果您真的想要一些纯文本文件,可以像Michael Borgwardt所说的那样做。但我不知道在这种情况下是否使用Hibernate是一个好主意。
嗯,既然问题仍然未得到解决,而且提问者表示接受新的方法/建议,那么我就来提供我的(虽然有点迟但没关系)。
你知道Prevayler吗?它是一个Java Prevalence实现,将所有业务对象保存在RAM中,并在文件系统中维护快照/更改日志,因此非常快速和可靠。如果发生任何崩溃,它将恢复上一个状态并重新应用每个更改。
此外,它非常容易设置和运行在您的应用程序中。
当然可以,您可以简单地使用Java的文件io功能,需要遵循以下步骤:
请注意,您的对象必须实现Serializable接口。 请参阅下面的链接,