Jboss Hibernate 没有说明对 SQLite 的支持 -
https://community.jboss.org/wiki/SupportedDatabases2
同样在下面提到:
你能强调一下吗?我想将嵌入式 SQLite 与休眠一起用于摆动桌面应用程序。
我也在评估 Derby (JavaDB),因为它也可以嵌入并且是 jdk 的一部分。
Jboss Hibernate 没有说明对 SQLite 的支持 -
https://community.jboss.org/wiki/SupportedDatabases2
同样在下面提到:
你能强调一下吗?我想将嵌入式 SQLite 与休眠一起用于摆动桌面应用程序。
我也在评估 Derby (JavaDB),因为它也可以嵌入并且是 jdk 的一部分。
那里有几种 SQLite 方言。
https://github.com/kemitix/sqlite-dialect
<dependency>
<groupId>net.kemitix</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.0</version>
</dependency>
休眠配置:
hibernate.dialect = org.hibernate.dialect.SQLiteDialect
https://github.com/EnigmaBridge/hibernate4-sqlite-dialect
<dependency>
<groupId>com.enigmabridge</groupId>
<artifactId>hibernate4-sqlite-dialect</artifactId>
<version>0.1.2</version>
</dependency>
休眠配置:
hibernate.dialect = com.enigmabridge.hibernate.dialect.SQLiteDialect
注意:我是这个存储库的作者。基于gwenn
回购。
https://github.com/gwenn/sqlite-dialect/
作者与 Hibernate 团队合作,将其直接集成到 Hibernate。在本期中对其进行了跟踪。
添加此依赖项:
<dependency>
<groupId>com.github.gwenn</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.2</version>
</dependency>
休眠配置:
hibernate.dialect = org.sqlite.hibernate.dialect.SQLiteDialect
由于 SQLite 是用于类 C 环境的嵌入式数据库,用 C 编写并因此编译为本机代码,因此 Hibernate(或任何 ORM)将支持的更改并不高。Java 是跨平台的,如果有依赖于平台的依赖,那就有点奇怪了。在 Android 上,使用 SQLite,但该平台为其提供了 JDBC 驱动程序。
通常,Windows 二进制文件在不同的 Windows 版本上是兼容的——只要架构保持不变。如果您查看SQLite 下载页面,您会注意到有一个 32 位预构建的 Windows 二进制文件。这个几乎可以在任何 Windows 版本上使用(可能除了 Windows RT),但你不能在 Linux 或 OS X 上使用它。为了从 Java 中使用 SQLite,你需要包含特定操作系统的正确二进制文件 /架构,有效地使 Java 应用程序依赖于平台。这是你通常不想要的。
如果您在 Swing 中构建桌面应用程序并且想要使用嵌入式数据库,我的建议是使用 Java 嵌入式数据库,例如H2、HSQL或Derby。后者还作为JavaDB随 Oracle Java 一起提供。所有都支持作为休眠方言(有关方言的完整列表,请参阅方言类:https ://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate /方言)
正如@akostadinov 所指出的,您可能还需要考虑其他因素,例如 SQLite 是用本机代码编写的,因此可能具有更好的性能。最后,唯一能决定哪个数据库最好的人是构建系统的人。
如果您出于某种原因需要将 SQLite 与 Hibernate 一起使用,那么您需要自定义方言。看起来网上有几个实现。
我尝试了这个:https ://github.com/gwenn/sqlite-dialect ,它适用于 Hibernate 3(我相信它需要对 Hibernate 4 进行一些更新)。请注意,您必须自己编译代码,然后将hibernate.dialect
配置属性设置为org.hibernate.dialect.SQLiteDialect
.
我发现的其他实现:http ://code.google.com/p/hibernate-sqlite/和https://gist.github.com/virasak/54436。
据我所知,SQLite 对 SQL 语法非常宽容,因此它可能会起作用。我没有在 hibernate 中广泛使用 SQLite,但尝试在 infinispan 中使用它并取得了一些成功。我发现最好推荐的库存 SQLite jdbc 驱动程序缺少一些 JDBC 标准的方法,因此我必须对其进行修补才能使其正常工作。
我认为您可以尝试使用hibernate,看看它是否有效。它可能会帮助您了解我为使用 infinispan 所做的工作: https ://issues.jboss.org/browse/ISPN-2980
我知道这不是您希望看到的确切答案,但我决定回答,因为我认为其他人几乎没有机会以更有帮助的方式回答。至少在我搜索更多信息时我找不到。