3

我需要构建一个将安装在 Linux 服务器上的 Java 应用程序。

当人们安装时,他们只需要安装这个应用程序,启动它,仅此而已。但是我们有一些数据要保存。

  • 我对 MySQL 说不,因为它需要一个服务器。
  • 我对 XML 说不,因为真的会有很多数据需要保存和操作。

所以我正在寻找我认为最好的 SQLite。确实(如果我错了,请阻止我),SQLite 不需要任何服务器?(只需安装最终的应用程序,SQLite 在我的应用程序中就可以正常工作了吗?)

然后我在http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers进行了检查,我真的有点困惑。

  • Wrapper 和 Driver 有什么区别?
  • 另外,我看到存在“纯 java 实现”:SQLJet 或多或少优化了吗?
  • 最后你会在我的情况下使用什么?
4

2 回答 2

17

另一个要考虑的数据库是H2它是一个完全用 Java 编写的嵌入式数据库引擎,因此您可以享受 Sqlite 所没有的完整 unicode(16 位)字符支持。其他嵌入式数据库是HSQLDBDerby

sqlite 不需要对服务器有任何要求吗?

正确的。它不是。H2也不行。

只需安装最终应用程序,sqlite 在我的应用程序中工作正常吗?

正确的。只要您在 WAR 中包含 Sqlite 或 H2(或将其解压到您的 jar 中),它就可以正常工作。

Wrapper 和 Driver 和有什么不一样?

取决于使用情况。我认为 Sqlite 是在谈论这样一个事实,即当您为 Sqlite 使用 JDBC 驱动程序时,它实际上是在驱动程序内部包装了 Sqlite C 本机库。通常,JDBC 驱动程序与远程数据库通信。

H2 也是这种方式,“驱动程序”实际上执行数据库操作,只是它是用 Java 编写的,所以你不需要 C 包装器。

另外,我看到存在“纯 java 实现”:SQLJet 或多或少优化了吗?

这是我第一次听说 Sqljet,所以我不确定。Xerial Sqlite 驱动程序是我使用过的,它的性能似乎不错。

最后你会在我的情况下使用什么?

我自己会使用 H2 来实现本机 Java 功能。

于 2012-07-24T21:41:55.813 回答
2
  1. 是的 SQLite 不需要服务器。

  2. 一个非常简单的开发解决方案是通过将 SQLLite 嵌入到源代码中来使用它,并带有一些存根数据。然后,您可以将数据库作为单个文件提交到您的版本控制系统(即我使用 github,它非常容易做到这一点)。显然,这不是一个好的生产方法,但它是创建单个开发版本的好方法。

  3. Wrapper 是一个程序,它允许您通过不同的接口访问另一个程序的功能。例如,eclipse 为我们在一个方便的 GUI 中“包装”了我们在日常开发中使用的许多 java 程序。而驱动程序是启动现有应用程序所需的程序。例如,在 java 应用程序中,我们可能有一个主类,可以将其视为应用程序入口点的驱动程序。

于 2012-07-24T21:15:43.753 回答