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

问题描述:

我在后端使用MySQL在Struts2中开发了一个应用程序。但是现在按照兴趣,我想在后端使用Oracle。如何通过更改Struts2中的配置来更改当前使用的数据库

为此,我将数据库配置更改为Oracle,但是我发现某些MySQL查询无法直接在Oracle上运行。

我搜索得太多,尝试了一些东西,但仍然没有解决方案。任何人都可以帮忙吗?

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

BaseHibernateDAO您可以创建一个方法

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

然后你可以使用这个方言为你创建的任何查询。

+0

是的,我使用原生查询,它们大约10000数。我无法测试每一个查询,然后更改代码,这就是为什么我要求任何解决方案。谢谢,但它不认为它是一个更好的主意,使用一个单独的代码。@ Roman C –

+0

我还建议你使用Hibernate与HQL查询。任何你必须使用oracle的方式,然后更好的先写HQL然后它将适应任何数据库。 – Mohan

+0

您可以举几个例子吗?@ RomanC –

在我看来你已经回答了你自己的问题。 MySQL查询并不完全与ORACLE兼容(例如:MySQL中的LIMIT是ORACLE中的ROWNUM)。 因此,如果您有'原始SQL'语句涉及MYSQL的特定术语,您应该将其更改为ORACLE。但是,如果您使用的是Objects来生成查询,则应该/应该通过您正在使用的(例如)持久性解决方案“自动地”处理;只需通过更改设置中的数据库驱动程序。

有关更多详细信息,我们需要一些适用于MYSQL的代码示例,而不适用于ORACLE。

让我知道是否有帮助。

+0

好吧,谢谢@pegas有manies的东西,它不直接在oracle上工作,如:自动增加值,限制,sysdate(),空值等。 –