2016-04-15 5 views
3

Ich habe eine Anwendung in Struts2 mit MySQL im Backend entwickelt. Aber jetzt möchte ich nach meinem Interesse Oracle im Backend verwenden.Wie kann ich die aktuell verwendete Datenbank ändern, nur indem ich die Konfigurationen in Struts2 ändere

Dafür habe ich die db-Konfigurationen zu Oracle geändert, aber ich habe festgestellt, dass einige der MySQL-Abfragen nicht direkt auf Oracle laufen können.

Ich habe zu viel gesucht und versuchte ein paar Dinge, aber immer noch keine Lösung. Kann mir hier jemand helfen?

Antwort

2

Sie können Hibernate verwenden, es gibt Dialekte für MySQL und Oracle. Wenn Sie jedoch native Abfragen verwenden, sollten Sie separaten Code für jeden Dialekt verwenden.

In der BaseHibernateDAO Sie eine Methode erstellen

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

Dann können Sie diesen Dialekt für jede Abfrage verwenden Sie erstellen.

+0

Ja, ich benutze native Abfragen und sie sind etwa 10000 in Nummer. Ich kann nicht jede einzelne Abfrage testen und dann den Code ändern, deshalb habe ich nach einer Lösung gefragt. danke, aber es ist nicht eine bessere Idee, einen separaten Code zu verwenden. @ Roman C –

+0

Ich würde Ihnen auch vorschlagen, den Ruhezustand mit HQL-Abfragen zu verwenden. Wie auch immer Sie Oracle verwenden müssen, dann schreiben Sie zuerst einmal HQL, dann wird es für jede Datenbank angepasst. – Mohan

+0

Können Sie bitte irgendwelche Beispiele geben? @ RomanC –

0

Meiner Meinung nach haben Sie Ihre eigene Frage beantwortet. MySQL-Abfragen sind nicht ALLE mit ORACLE kompatibel (Beispiel: LIMIT in MySQL wäre ROWNUM in ORACLE). Wenn Sie also "Raw SQL" -Anweisungen haben, die bestimmte Begriffe für MYSQL enthalten, sollten Sie diese in ORACLE ändern.

Wenn Sie jedoch Objects verwenden, um die Abfragen zu generieren, würde dies automatisch von der (zum Beispiel) verwendeten Persistenzlösung gehandhabt werden; einfach durch Ändern des Datenbanktreibers in den Einstellungen.

Für weitere Details benötigen wir/ich einige Beispiele für Code, der auf MYSQL funktioniert und nicht auf ORACLE.

Lassen Sie mich wissen, wenn das hilft.

+0

gut, danke @pegas gibt es Manies Sache, die nicht direkt auf Orakel wie: Auto inkrementierte Werte, Grenzen, Sysdate(), Null-Werte usw. –

Verwandte Themen