Jboss Hibernate没有提到its wiki中对SQLite的支持:和相同的是在下面提到堆栈溢出后:Hibernate+SQLite+NetBeans你能强调一下吗?我想在Swing桌面应用程序中使用嵌入式SQLite和Hibernate。我还在评估Derby(JavaDB),因为它也可以嵌入,并且是JDK的一部分。
2uluyalo1#
有几种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仓库。
gwenn
https://github.com/gwenn/sqlite-dialect/作者与Hibernate团队合作,将其直接集成到Hibernate中。它在这个issue中被跟踪。添加此依赖项:
<dependency> <groupId>com.github.gwenn</groupId> <artifactId>sqlite-dialect</artifactId> <version>0.1.2</version> </dependency>
hibernate.dialect = org.sqlite.hibernate.dialect.SQLiteDialect
mrwjdhj32#
由于SQLite是一个嵌入式数据库,用于类C环境,用C编写,因此编译为本地代码,Hibernate(或任何ORM)支持的更改并不多。Java是跨平台的,因此有一个依赖于平台的依赖项会有点奇怪。在Android上,使用SQLite,但该平台为它提供了JDBC驱动程序。通常,Windows二进制文件在不同的Windows版本上是兼容的--只要架构保持不变。如果你看一下SQLite download page,你会注意到它有一个32位的预构建Windows二进制文件。这个文件几乎可以在任何Windows版本上使用(Windows RT可能除外),但您不能在Linux或OS X上使用它。为了从Java中使用SQLite,你需要为特定的操作系统/体系结构包含正确的二进制文件,这实际上使Java应用程序依赖于平台,这通常是你不想要的。如果您正在Swing中构建桌面应用程序,并且希望使用嵌入式数据库,我的建议是使用Java嵌入式数据库,如H2、HSQL或Derby。后者也作为JavaDB随Oracle Java一起提供。所有这些数据库都支持作为Hibernate方言(有关方言的完整列表,请参见方言类:https://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate/dialect)正如@akostadinov所指出的,您可能需要考虑其他因素,例如SQLite是用本地代码编写的,因此 * 可能 * 具有更好的性能。最终,唯一能够决定哪个数据库最好的人是构建系统的人。
huwehgph3#
如果你出于某种原因需要在Hibernate中使用SQLite,那么你需要一个定制的方言,看起来在网络上有一些实现。我试过这个: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。
hibernate.dialect
org.hibernate.dialect.SQLiteDialect
ggazkfy84#
SQLite是非常宽容的SQL语法,因为我有经验,所以它可能会工作。我没有使用SQLite广泛与hib,但尝试使用它与infinispan有一些成功。股票SQLite jdbc驱动程序,我发现作为最好的推荐,缺乏一些JDBC标准的方法,所以我不得不打补丁,让它工作。我想你可以用Hibernate试试看它是否能用。看看我是怎么让它和Infinispan一起工作的,可能会对你有帮助:https://issues.jboss.org/browse/ISPN-2980我知道这不是你希望看到的确切答案,但我决定回答,因为我认为没有其他人能以更有帮助的方式回答,至少当我当时寻找更多信息时,我找不到。
0pizxfdo5#
在Hibernate 6中,SQLite是community dialects in the Hibernate repository的一部分。添加以下依赖项:等级:
implementation("org.hibernate.orm:hibernate-community-dialects:6.1.6.Final")
玛文:
<dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-community-dialects</artifactId> <version>6.1.6.Final</version> </dependency>
并将其设置为Hibernate方言:
org.hibernate.community.dialect.SQLiteDialect
阅读Hibernate GitHub discussion中关于Hibernate社区维护的方言的更多信息。
5条答案
按热度按时间2uluyalo1#
有几种SQLite方言。
休眠3:
https://github.com/kemitix/sqlite-dialect
休眠配置:
休眠4:
https://github.com/EnigmaBridge/hibernate4-sqlite-dialect
休眠配置:
注意:我是这个仓库的作者。基于
gwenn
仓库。休眠5:
https://github.com/gwenn/sqlite-dialect/
作者与Hibernate团队合作,将其直接集成到Hibernate中。它在这个issue中被跟踪。
添加此依赖项:
休眠配置:
mrwjdhj32#
由于SQLite是一个嵌入式数据库,用于类C环境,用C编写,因此编译为本地代码,Hibernate(或任何ORM)支持的更改并不多。Java是跨平台的,因此有一个依赖于平台的依赖项会有点奇怪。在Android上,使用SQLite,但该平台为它提供了JDBC驱动程序。
通常,Windows二进制文件在不同的Windows版本上是兼容的--只要架构保持不变。如果你看一下SQLite download page,你会注意到它有一个32位的预构建Windows二进制文件。这个文件几乎可以在任何Windows版本上使用(Windows RT可能除外),但您不能在Linux或OS X上使用它。为了从Java中使用SQLite,你需要为特定的操作系统/体系结构包含正确的二进制文件,这实际上使Java应用程序依赖于平台,这通常是你不想要的。
如果您正在Swing中构建桌面应用程序,并且希望使用嵌入式数据库,我的建议是使用Java嵌入式数据库,如H2、HSQL或Derby。后者也作为JavaDB随Oracle Java一起提供。所有这些数据库都支持作为Hibernate方言(有关方言的完整列表,请参见方言类:https://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate/dialect)
正如@akostadinov所指出的,您可能需要考虑其他因素,例如SQLite是用本地代码编写的,因此 * 可能 * 具有更好的性能。最终,唯一能够决定哪个数据库最好的人是构建系统的人。
huwehgph3#
如果你出于某种原因需要在Hibernate中使用SQLite,那么你需要一个定制的方言,看起来在网络上有一些实现。
我试过这个: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。
ggazkfy84#
SQLite是非常宽容的SQL语法,因为我有经验,所以它可能会工作。我没有使用SQLite广泛与hib,但尝试使用它与infinispan有一些成功。股票SQLite jdbc驱动程序,我发现作为最好的推荐,缺乏一些JDBC标准的方法,所以我不得不打补丁,让它工作。
我想你可以用Hibernate试试看它是否能用。看看我是怎么让它和Infinispan一起工作的,可能会对你有帮助:https://issues.jboss.org/browse/ISPN-2980
我知道这不是你希望看到的确切答案,但我决定回答,因为我认为没有其他人能以更有帮助的方式回答,至少当我当时寻找更多信息时,我找不到。
0pizxfdo5#
在Hibernate 6中,SQLite是community dialects in the Hibernate repository的一部分。
添加以下依赖项:
等级:
玛文:
并将其设置为Hibernate方言:
阅读Hibernate GitHub discussion中关于Hibernate社区维护的方言的更多信息。