53

Jboss Hibernate 没有说明对 SQLite 的支持 -

https://community.jboss.org/wiki/SupportedDatabases2

同样在下面提到:

休眠+SQLite+Netbeans

你能强调一下吗?我想将嵌入式 SQLite 与休眠一起用于摆动桌面应用程序。

我也在评估 Derby (JavaDB),因为它也可以嵌入并且是 jdk 的一部分。

4

4 回答 4

54

那里有几种 SQLite 方言。

休眠 3:

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

休眠 4:

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回购。

休眠 5:

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
于 2016-08-03T23:37:30.593 回答
19

由于 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 嵌入式数据库,例如H2HSQLDerby后者还作为JavaDB随 Oracle Java 一起提供。所有都支持作为休眠方言(有关方言的完整列表,请参阅方言类:https ://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate /方言)

正如@akostadinov 所指出的,您可能还需要考虑其他因素,例如 SQLite 是用本机代码编写的,因此可能具有更好的性能。最后,唯一能决定哪个数据库最好的人是构建系统的人。

于 2013-07-11T07:54:35.840 回答
7

如果您出于某种原因需要将 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

于 2014-03-16T23:07:31.840 回答
4

据我所知,SQLite 对 SQL 语法非常宽容,因此它可能会起作用。我没有在 hibernate 中广泛使用 SQLite,但尝试在 infinispan 中使用它并取得了一些成功。我发现最好推荐的库存 SQLite jdbc 驱动程序缺少一些 JDBC 标准的方法,因此我必须对其进行修补才能使其正常工作。

我认为您可以尝试使用hibernate,看看它是否有效。它可能会帮助您了解我为使用 infinispan 所做的工作: https ://issues.jboss.org/browse/ISPN-2980

我知道这不是您希望看到的确切答案,但我决定回答,因为我认为其他人几乎没有机会以更有帮助的方式回答。至少在我搜索更多信息时我找不到。

于 2013-07-11T07:57:11.127 回答