Java 如何仅通过更改Struts2中的配置来更改当前使用的数据库

Java 如何仅通过更改Struts2中的配置来更改当前使用的数据库,java,mysql,sql,oracle,struts2,Java,Mysql,Sql,Oracle,Struts2,我在Struts2中开发了一个应用程序,在后端使用MySQL。但现在出于兴趣,我想在后端使用Oracle 为此,我将db配置更改为Oracle,但我发现一些MySQL查询无法直接在Oracle上运行 我搜索了太多,尝试了一些东西,但仍然没有解决办法。有人能帮忙吗 我认为你已经回答了你自己的问题。 MySQL查询并不都与ORACLE兼容(例如:MySQL中的限制是ORACLE中的ROWNUM)。 因此,如果您有涉及MYSQL特定术语的“原始SQL”语句,您应该将其更改为ORACLE 但是,如果您正

我在Struts2中开发了一个应用程序,在后端使用MySQL。但现在出于兴趣,我想在后端使用Oracle

为此,我将db配置更改为Oracle,但我发现一些MySQL查询无法直接在Oracle上运行


我搜索了太多,尝试了一些东西,但仍然没有解决办法。有人能帮忙吗

我认为你已经回答了你自己的问题。 MySQL查询并不都与ORACLE兼容(例如:MySQL中的限制是ORACLE中的ROWNUM)。 因此,如果您有涉及MYSQL特定术语的“原始SQL”语句,您应该将其更改为ORACLE

但是,如果您正在使用对象生成查询,那么(例如)您正在使用的持久性解决方案将/应该“自动”处理该查询;只需在设置中更改数据库驱动程序

有关更多详细信息,我们/我需要一些在MYSQL上工作而在ORACLE上不工作的代码示例


如果有帮助,请告诉我。

您可以使用Hibernate,它有MySQL和Oracle的方言。但是如果您使用本机查询,那么应该为每种方言使用单独的代码

BaseHibernateDAO
中,您可以创建一个方法

protected Dialect getDialect(){
  return ((SessionFactoryImplementor) sessionFactory).getDialect();
}

然后,您可以将此方言用于创建的任何查询

是的,我正在使用本机查询,它们的数量大约为10000。我不能测试每一个查询,然后更改代码,这就是为什么我要求任何解决方案。谢谢,但它不认为使用单独的代码更好。@Roman CI还建议您在HQL查询中使用Hibernate。任何使用oracle的方法,最好先编写一次HQL,然后它就可以适应任何数据库。你能举个例子吗?-Mohanwell,谢谢@pegas有很多东西不能直接在oracle上工作,比如:自动递增值、限制、sysdate()、空值等。