Java SQL数据库独立性

时间:2010-03-30 09:28:52

标签: java jdbc liquibase

由于种种原因,我一直在寻找Hibernate的替代品。我遇到了Liquibase,我喜欢这个主意,所以我愿意尝试一下。 Liquibase将以SQL独立方式提供数据库创建/修改。我的主要问题是我的应用程序中的代码如何执行SQL语句而不依赖于数据库?还有一些其他项目就像Hibernates Dialect类一样吗?

谢谢,

4 个答案:

答案 0 :(得分:1)

使用SQL的一个问题是它依赖于供应商。我不认为没有使用某些第三方库或框架(如Hibernate!)就可以解决这个问题。

但如果你选择SQL,我强烈建议你看看Ibatis

答案 1 :(得分:1)

我对此表示怀疑 - hibernate中的方言用于将对象和HQL查询转换为适当的本机查询。

如果要使用纯SQL查询,则应将SQL查询转换为.. SQL查询。

实现数据库独立性的一种方法是仅使用ANSI SQL。但即使这样也不能保证数据库的完全独立性。

我建议坚持使用hibernate和HQL(JPA-QL)

答案 2 :(得分:1)

如果你想在正常的liquibase过程之外使用liquibase的SQL生成类,你可以。特别是在2.0中,sql生成类已得到改进和抽象,但根据您想要运行的内容,它可能无法满足您的需求。

由于liquibase是关于数据库迁移的,因此大多数与数据库无关的逻辑都是围绕DDL语句(创建表/添加列等)而不是插入/更新/删除语句。不知道你将运行什么类型的语句,我会假设你更关心跨数据库插入/更新/删除语句,在这种情况下你会更好地服务于hibernate / ibatis /等。

答案 3 :(得分:1)

  

我的主要问题是我的应用程序中的代码如何在不依赖数据库的情况下执行SQL语句?

嗯,真正实现这一目标的唯一方法是使用比SQL更高级别的查询语言,将其转换为特定于数据库的SQL。我们已经为此提供了一些(专有的,标准的)DSL:Toplink QL,EJB-QL,JDO QL,HQL,JPQL等。我的建议是选择你的毒药(但请不要推出自己的解决方案) )。