analoge technologie zu OPEN SQL in java

Status
Nicht offen für weitere Antworten.

rambozola

Bekanntes Mitglied
hi leute,

gibt es in java eine möglichkeit ein programm zu schreiben, dass auf db´s zugreift und dem es völlig egal ist ob da eine oracle- oder mysql- oder ms sql-db angesprochen werden?

das problem ist das z. B. oracle und mysql eine leicht andere syntax haben und wenn man die db wechselt müsste das programm umgeschrieben werden.

in sap gibt es open sql. dieser technik ist es egal was für eine db nun dahintersteckt.

gibt es da etwas vergleichbares in java? mit jdbc muss ich ja immer die sql-befehle im code der db anpassen.
 

KSG9|sebastian

Top Contributor
Eine API dafür kenne ich nicht. Über die bekannten O/R-Mappingtools (Hibernate und Co.) hast du aber genau diese Möglichkeit.
Jedoch musst du dein Programm dann auf Hibernate oder welchen O/R-Mapper auch immer umbauen.

Wie soll das eigentlich funktionieren was du da suchst? Da die Syntax teilweise sehr verschieden ist frage ich mich wie es möglich sein soll da ein "Universal-SQL" zu bieten. Das kann doch nur ein fast Funktionsloses Teil auf kleinstem gemeinsamem Nenner werden. Und wenn man den kleinsten gemeinsamen Nenner von MySQL, Oracle, DB/2, Derby u.s.w. nimmt dann wird man ungefähr richtung 0 gehen?

Gruß sebastian
 

rambozola

Bekanntes Mitglied
danke KSG9|sebastian für deine antwort...

ja du hast recht...open sql ist nur eine untermenge vom sql-standard...soso mit hibernate also...was ist da das prinzip...oder hast du nen link mit nem ganz simplen tutorial oder codezeilen?
 

sparrow

Top Contributor
rambozola hat gesagt.:
hat schon jemand erfahrungen mit hibernate?

Ich habe vor einiger Zeit damit herumprobiert, allerdings war es mir persönlich zu kompliziert. Ich wollte nicht die das Programm und dessn Logik hochziehen und dabei das Risiko eingehen, dass ich bei dem Entwurf der Datenbank enen Fehler mache weil ich mich zusätzlich noch mit Hibernate auseinander setzen muss.
Ich bin dann letztendlich doch bei PostgreSQL geblieben.

Ich habe damals darüber nachgedacht einfach die Grundbasis des SQL-Syntax zu verwenden. Die Grundsachen wie dei Datenfelder unterscheiden sich ja in den einzelnen Datenbanken nicht so sehr. Und so Sachen wie Sequenzen hätte ich dann im Programm selber umgesetzt.

Ich scheiterte aber sehr schnell, da einige Datenbanken Sachen die für mich selbstverständlich und wichtig waren (Transaktionen/Rollbacks, Subqueries, Zugriffssperre auf Datensatzebene) ganz einfach nicht anboten.

Bei Hibernate stieß ich sehr schnell an meine Grenzen da ich bei einer hochfrequentierten Tabelle mit mehreren Millionen Datensätzen Probleme bei der Performance bekam. Das könnte aber auch auf meinem Unwissen über Hibernate basieren. Ich löste das damals indem ich Hibernate als Mittler wieder heraus nahm und entsprechende Indexe und Selections-Optimierungen in der Datenbank und im Code vornahm.
 

KSG9|sebastian

Top Contributor
Ich mach recht viel mit Hibernate.
Das Problem bei dem ganzen ist dass du viel Zeit für optimale Konfiguration benötigst. Wenn du das nicht tust hast du extreme Performanceeinbußen.
Im Hibernateforum findest du viele hilfreiche Sachen, Google spuckt auch viel gute Ergebnisse aus.

@bronks: Was meinst du mit "bei alter und create durchfallen"?
 

bronks

Top Contributor
KSG9|sebastian hat gesagt.:
... @bronks: Was meinst du mit "bei alter und create durchfallen"?
Ich meinte damit, daß eine der o.g. Datenbanken die von Hibernate erzeugten Statement für create und alter nicht festehen und mit Fehlermeldungen um sich schmeissen wird.
 

sparrow

Top Contributor
bronks hat gesagt.:
KSG9|sebastian hat gesagt.:
... @bronks: Was meinst du mit "bei alter und create durchfallen"?
Ich meinte damit, daß eine der o.g. Datenbanken die von Hibernate erzeugten Statement für create und alter nicht festehen und mit Fehlermeldungen um sich schmeissen wird.

Kommt drauf an ob Hibernate die Datenbank unterstützt. Tut es das wird es keine Fehler geben, dafür ist es ja da.
 

bronks

Top Contributor
sparrow hat gesagt.:
... Kommt drauf an ob Hibernate die Datenbank unterstützt. Tut es das wird es keine Fehler geben, dafür ist es ja da.
Hibernate muß keine Datenbank unterstützten, denn Datenbanken verstehen normalerweise ANSI-SQL, aber das kann man von MySql doch nicht verlangen ...
 

mephi

Bekanntes Mitglied
mal am rande(hab noch nie was mit DB gemacht)
kann man nicht einfach eine abfrage oder kontrolle einbauen mit der kontrolliert oder eingegeben wird auf was für eine datenbank man zugreift und dann jeweils ein modul für eine DB einbaut?
 
G

Guest

Gast
mephi hat gesagt.:
mal am rande(hab noch nie was mit DB gemacht)
kann man nicht einfach eine abfrage oder kontrolle einbauen mit der kontrolliert oder eingegeben wird auf was für eine datenbank man zugreift und dann jeweils ein modul für eine DB einbaut?
Lese mal das hier durch.

EJB Persistenz mit Java SE

Teil 1: http://www.zdnet.de/builder/program/0,39023551,39142744,00.htm
Teil 2: http://www.zdnet.de/builder/program/0,39023551,39143624,00.htm
Teil 3: http://www.zdnet.de/builder/program/0,39023551,39143875,00.htm
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben