# Empfehlenswert: Java + MySQL?



## Hannes23 (9. Mai 2007)

Hallo zusammen,

ich bin am überlegen ob ich für ein anstehendes Projekt die Kombination Java und MySQL verwenden soll, bin mir aber noch unschlüssig. Deshalb wollte ich nach eueren Erfahrungen dazu fragen. Ist es schwierig auf eine MySQL-DB mit Java zuzugreifen? Treten häufig Probleme auf? Gibt es Informationen dazu im Internet (z.B. typische DB-Operationen, wie Datensatznaviagtion, Datensatz suchen, erfassen, ändern, ...)? Ich hab nämlich an Büchern auch nicht wirklich viel zu dieser Kombination gefunden?

Vielen Dank für euere Hinweise,

Hannes


----------



## SlaterB (9. Mai 2007)

idealerweise baust du die Java-Anwendung so, 
dass du mit 1-2 Konfigurationsänderungen zu einer anderen DB wechseln kannst

also kann man nicht wirklich von einer engen Verbindung reden,
falls man nicht gerade unbedingt MySQL-spezifische Kommandos einsetzt
----

natürlich braucht es allgemein eine Anbindung von der DB an Java,
aber das machen Treiber, für jede DB gibts passende Treiber, 
die von Java einheitlich anzusprechen sind,

MySQL ist also aus erster Sicht genauso schwer oder leicht anzubinden wie jede andere DB auch

Bücher sollte es geben, ja, aber da sind zumindest für den Anfang eher die allgemeinen zu empfehlen,
MysQL-spezifische Sachen einzusetzen macht die Anwendung nun mal abhängig von der DB
(habe ich das schon erwähnt?  )


----------



## Wildcard (9. Mai 2007)

Je nachdem was die DB leisten muss reicht häufig auch eine reine Java DB wie Java DB :wink:, HSQL, oder H2 im embedded Betrieb.


----------



## Sladda (10. Mai 2007)

Hi!

Interessantes Thema, ich stecke nämlich gerade in genau dem selben Dilemma wie Hannes23.
Habe bereits viel gelesen, sodass ich sagen würde, prinzipiell ist es eine recht gute Kombination, 
ABER: 
auf der Suche nach dem richtigen Server bin ich dann ganz schön ins Straucheln gekommen.
Viele webhoster verweigern "aus Sicherheitsgründen" den Zugriff auf die dort liegende MySql-Datenbank per JDBC!
Eine klassische Client-Server Kommunikation, bei der die (Client-) Applikation auf den externen Server (auf dem die DB liegt) zugreift, um dort zu arbeiten, ist also oft schon von vornherein ausgeschlossen. Sogar Strato verbietet es!

An Alle: Ich wäre für jeden Tip sehr dankbar welcher Webhoster eben solche Zugriffe nicht unterbindet !!! (oder auch für Alternativen....  -.-)

Vielen Dank und schöne Grüße
Sladda


----------



## bronks (10. Mai 2007)

Sladda hat gesagt.:
			
		

> ... Habe bereits viel gelesen, sodass ich sagen würde, prinzipiell ist es eine recht gute Kombination, ...


Ich meine, dass es eine schlechte Kombination ist, da MySql die Create und Alter von EJB nicht versteht, da MySql m.W. nur seine nicht Standardkonforme SqlSyntax versteht. Sogar der Microsoft SQL Server kommt mit EJB vollständig zurecht.

Hab schon öfter die Leute gefragt, welche MySql so lieben, ob und wie es funktioniert, aber man erfährt nichts. Deshalb nehme ich an, daß es o.g. einfach nicht funktioniert.

Andere Frage: Kann man mit der relativ neuen JPA oder Hibernate überhaupt problemlos in MySql Tabellen erstellen und ändern?


----------



## Guest (10. Mai 2007)

bronks hat gesagt.:
			
		

> Andere Frage: Kann man mit der relativ neuen JPA oder Hibernate überhaupt problemlos in MySql Tabellen erstellen und ändern?


Geht schon, nur muss man auf einige Features verzichten. z.B. Sequenzen.


----------



## Gast (10. Mai 2007)

Also empfehlt ihr eher nen Windows Server zu nehmen und da MS-Sql zu installieren !? Ob ich da dann vollen Zugriff von außen habe ? Oder Java+MSSql doch auch nicht so das Wahre.. ???


----------



## DP (10. Mai 2007)

Sladda hat gesagt.:
			
		

> Viele webhoster verweigern "aus Sicherheitsgründen" den Zugriff auf die dort liegende MySql-Datenbank per JDBC!



wo steht solche mär geschrieben?! es geht lediglich um port 3306.



			
				Sladda hat gesagt.:
			
		

> Sogar Strato verbietet es!



noch so ein märchen aus dem abendland.

bei strato ist port 3306 offen und kann problemlos angesprochen werden. zumindest bei den dedicated servern.


----------



## DP (10. Mai 2007)

Gast hat gesagt.:
			
		

> Also empfehlt ihr eher nen Windows Server zu nehmen und da MS-Sql zu installieren !? Ob ich da dann vollen Zugriff von außen habe ? Oder Java+MSSql doch auch nicht so das Wahre.. ???



kommt drauf an was du vor hast.

mein erp läuft auf windows 2k3 +mysql + tomcat problemlos. per jdbc wird mit dem shop kommuniziert und daten ausgerollt und abgeholt. 

alles kein thema bzw. alles ein thema der einarbeitung.


----------



## Sladda (10. Mai 2007)

> wo steht solche mär geschrieben?! es geht lediglich um port 3306.



http://www.strato-faq.de/view.php4?...rl_literal=&stype=&maxrows=11&pcatid=&extern=


Ich habe nicht viel Ahnung davon weil ich mich erst "einarbeite"...

Wo hast du denn deinen Server ? 

Wenn du das für eine "mär" hältst, mach mir doch mal bitte einen konkreten Vorschlag, darüber würde ich mich sehr freuen!


----------



## DP (10. Mai 2007)

ich habe strato business server gebucht.


----------



## DP (10. Mai 2007)

achso, bei hosteurope funktioniert der remotezugriff auf mysql auch schon bei den billigsten webpacks


----------



## kleiner_held (10. Mai 2007)

Ich halte die Kombination von Java und MySQL nicht für problematisch. Und bevor ich die Kohle für einen MS SQL Server rauswerfe, teste ich lieber ob ich es auch mit MySQL hinbekomme. Was die die Probleme mit Create und Alter angeht, kann ich das nicht nachvollziehen. Erstens gibt es z.B.: im JBoss eine spezielle Konfigurationsdatei für das konkrete Mapping von EJB-QL der CMP auf SQL und zum Andern wird normalerweise des DB Setup (DDL) unabhängig vom EJB-Deployment verwaltet. Wer will schon wirklich, dass der AppServer beim Un-Deploy deine Tables dropt? ;-)


----------



## /dev/Java/ (16. Mai 2007)

Denkt an die GPL!

Der Treiber ist GPL nicht LGPL!!!!!

Treiber einbinden => Projekt unter die GPL stellen!
Sonst Treiber von MySQL kaufen....

cu /dev/Java


----------



## DP (16. Mai 2007)

imo nur wenn das projekt veräußert wird, ansonsten GPL halt


----------



## kleiner_held (16. Mai 2007)

Ich bin mir auch so nicht sicher wie stark das CopyLeft fuer die Verwendung eines GPL JDBC Drivers greift. Da gibt es ja aehnliche Streitfaelle beim Linux Kernel und den proprietären Grafikkartentreibern. 

Wenn man sein Programm ohne JDBC Driver und Datenbank ausliefert, den Driver ueber die uebliche JDBC Schnittstelle anspricht und seinen Abnehmern/Kunden eine Anleitung zur Verfuegung stellt, wie man die Applikation mit MySQL aufsetzt, dann sehe ich keine Notwendigkeit fuer eine GPL Lizensierung der eigenen Anwendung - bin aber auch kein Jurist.


----------



## bronks (16. Mai 2007)

kleiner_held hat gesagt.:
			
		

> ... Wenn man sein Programm ohne JDBC Driver und Datenbank ausliefert, den Driver ueber die uebliche JDBC Schnittstelle anspricht und seinen Abnehmern/Kunden eine Anleitung zur Verfuegung stellt, wie man die Applikation mit MySQL aufsetzt, dann sehe ich keine Notwendigkeit fuer eine GPL Lizensierung der eigenen Anwendung - bin aber auch kein Jurist.


Das im im letzten Absatz der GPL geregelt.


----------



## kleiner_held (16. Mai 2007)

Das bezieht sich eher auf statisches/dynamisches linken von Bibliotheken. Ein JDBC-Driver geht aber schon mehr in Richtung Plugin: GPL-FAQ

Spaetestens wenn man allgemein einen JDBC-Driver und eine DB vorraussetzt, ist man doch nicht an irgendwelche Lizensen gebunden. Und eine Anleitung bereitzustellen: "Wie betreibe ich meine Applikation mit MySQL" verpflichtet auch zu nichts.


----------



## bronks (19. Mai 2007)

Ich habe den Inhalt dieses Posts etwas verändert, denn die aktuelle Version von MySql hat mich doch sehr überrascht. Die Kompatibilität ist nicht mehr so grauenhaft, wie früher. Ein paar Sachen sind noch gewöhnungsbedürftig, aber in den letzten Jahren hat MySql doch deutlich ein paar fällige Modifikationen nachgeholt.


----------

