Jboss Hibernate对SQLite的支持没有任何说明 -
https://community.jboss.org/wiki/SupportedDatabases2
同样在下面提到SO:
请你强调一下这个。我想将嵌入式SQLite与hibernate一起用于swing桌面应用程序。
我也正在评估Derby(JavaDB),因为它也可以嵌入并且是jdk的一部分。
答案 0 :(得分:34)
有几种SQLite方言。
https://github.com/kemitix/sqlite-dialect
<dependency>
<groupId>net.kemitix</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.0</version>
</dependency>
Hibernate配置:
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配置:
hibernate.dialect = com.enigmabridge.hibernate.dialect.SQLiteDialect
注意:我是此存储库的作者。基于gwenn
回购。
https://github.com/gwenn/sqlite-dialect/
尚未添加到maven中央存储库。作者与Hibernate团队合作,将其直接集成到Hibernate。它会在issue中进行跟踪。
同时您可以使用https://jitpack.io/
添加jitpack存储库:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
添加依赖项:
<dependency>
<groupId>com.github.gwenn</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>master</version>
</dependency>
Hibernate配置:
hibernate.dialect = org.hibernate.dialect.SQLiteDialect
答案 1 :(得分:15)
由于SQLite是用于类C环境的嵌入式数据库,用C语言编写并编译为本机代码,因此Hibernate(或任何ORM)支持的更改并不高。 Java是跨平台的,拥有依赖于平台的依赖关系会有点奇怪。在Android上,使用SQLite,但平台为它提供了JDBC驱动程序。
通常,Windows二进制文件在不同的Windows版本上兼容 - 只要架构保持不变即可。如果查看SQLite download page,您会注意到有一个32位预构建的Windows二进制文件。这个可用于几乎任何Windows版本(可能除了Windows RT之外),但是你不能在Linux或OS X上使用它。为了从Java使用SQLite,你需要为特定的OS包含正确的二进制文件体系结构,有效地使Java应用程序依赖于平台。这是你通常不想要的东西。
如果您在Swing中构建桌面应用程序并且想要使用嵌入式数据库,我的建议是使用Java嵌入式数据库,例如H2,HSQL或{{3} }。后者也随Oracle Derby一起提供。所有都支持为休眠方言(有关方言的完整列表,请参阅方言类:JavaDB)
如下所述@akostadinov,您可能还需要考虑其他因素,例如,SQLite是用本机代码编写的,因此可能具有更好的性能。最后,唯一可以决定哪个数据库最好的是建立系统的人。
答案 2 :(得分:6)
如果您因任何原因需要使用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。
答案 3 :(得分:3)
就我的经验而言,SQLite对SQL语法非常宽容,因此它可能会起作用。我没有广泛使用SQLite与hibernate,但尝试使用infinispan并取得了一些成功。我发现最好推荐的库存SQLite jdbc驱动程序缺少一些JDBC标准的方法,所以我不得不修补它以使其工作。
我认为您可以尝试使用hibernate并查看它是否有效。它可以帮助你看到我做了什么让它与infinispan一起工作: https://issues.jboss.org/browse/ISPN-2980
我知道这不是您希望看到的确切答案,但我决定回答,因为我认为其他任何人都没有机会以更有帮助的方式回答。至少当我在找不到的时候搜索更多信息时。