我想使用Hibernate将持久对象保存到文件系统,而不需要SQL数据库。
这可能吗?
答案 0 :(得分:4)
Hibernate在JDBC之上工作,所以你只需要一个JDBC驱动程序和一个匹配的Hibernate方言。
然而,JDBC基本上是SQL的抽象,因此无论你使用什么,它都会像SQL数据库那样外观,行走和嘎嘎 - 你也可以使用它并且让自己免于很多麻烦。此外,任何此类解决方案的大小和复杂性都可能与Derby等轻量级Java数据库相当。
当然,如果您不坚持使用Hibernate,还有很多其他选择。
答案 1 :(得分:2)
如果您使用JDBC纯文本驱动程序,它似乎在技术上可行;但是我还没有看到任何提供写访问权限的开源软件;我在sourceforge上找到的那个是只读的。
答案 2 :(得分:2)
你已经有了一个实体模型,我想你不想丢失它,也不想丢失它中包含的关系。实体模型被定向转换为关系数据库。
Hibernate和任何其他JPA提供程序(EclipseLink)将此实体模型转换为SQL。他们使用JDBC驱动程序提供与SQL数据库的连接。这个,你需要保持。
要问的正确问题是:有人知道embedded Java SQL database
,你可以从Java开始吗?本主题中提到了很多这些:
我在一个项目中使用HyperSQL来处理小数据,而Apache Derby用于一个拥有大型数据库(2Gb及更多)的项目。 Apache Derby在这些庞大的数据库上表现更好。
答案 3 :(得分:0)
我不确切地知道你的需要,但也许它是下面的一个:
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是不是一个好主意。
答案 4 :(得分:0)
答案 5 :(得分:0)
好吧,因为问题仍然存在,OP表示他已接受新的方法/建议,这里是我的(有点晚了但还可以。)
你知道Prevayler吗?它是一种Java Prevalence实现,它将所有业务对象保存在RAM中并保存文件系统中的Snapshots / Changelogs,这样它非常快速和可靠,因为如果发生任何崩溃,它和#39; ll恢复它的最后状态并重新应用每个更改。
此外,在您的应用中设置和运行非常简单。
答案 6 :(得分:-5)
当然这是可能的,你可以简单地使用Java的文件io功能,需要以下步骤: -
java.util.Scanner
。请注意,您的对象必须实现Serializable
接口。 See following link,