Hier eine Kurzbeschreibung, um in der Entwicklungsumgebung NetBeans 6.9.1 eine JDBC-Datasource für eine Java Enterprise-Applikation hinzuzufügen. Inklusive Database Mapping, Persistent Entities und Session Beans, die über Annotationen in einem Servlet verwendet werden können:
- “mysql-connector-java-5.1.13-bin.jar” in den lib-Ordner von GlassFish 3.0.1 kopieren
- GlassFish neustarten
- MySQL Connection-Pool in der GlassFish-Administrationsoberfläche anlegen
- JDBC Ressource (jdbc/name) in der GlassFish- Administrationsoberfläche anlegen
- Entity Classes from Database (mit List-Collection) in NetBeans-Projekt generieren
- New Persistence Unit in NetBeans-Projekt generieren
- New Session Bean (ohne Interface) in NetBeans-Projekt erzeugen
- New Servlet in NetBeans-Projekt erzeugen
- SessionBean mit @EJB-Annotation verwenden
Die JDBC Ressource muss diese Eigenschaften gesetzt haben:
portNumber
databaseName
serverName
password
user
URL
Url
Die URL wird folgendermaßen aufgebaut: jdbc:mysql://hostname:port/databaseName.
Beim Versuch eine Datenquelle (engl. datasource) in /WEB-INF/applicationContext.xml meiner Java Enterprise-Anwendung hinzuzufügen, lieferte mir die Ausgabe meines GlassFish Server 3 in NetBeans 6.9.1 diesen Fehler:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property ‘driverClassName’ threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.Driver]
Vor der Installation von phpMyAdmin sollte zuerst ein MySQL-Daemon sowie ein Apache-Webserver installiert werden. Danach ist die Installation von phpMyAdmin ein Kinderspiel:
1 2 3 | sudo apt-get install phpmyadmin sudo scp /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf sudo /etc/init.d/apache2 reload |
Wenn man in seinem SQL-Statement seine Attributwerte in Backticks (`) anstatt in Hochkommata (‘) zusammen fasst, dann führt das zur SQL Fehlermeldung 1054.
Beispiel:
Die folgende Anfrage liefert den Fehler #1054 – Unknown column ‘M’ in ‘where clause’.
SELECT `KundenNr` FROM `stammkunde` WHERE `Rechnungsart` = `M`
Dagegen liefert diese Anfrage ein gültiges Ergebnis:
SELECT `KundenNr` FROM `stammkunde` WHERE `Rechnungsart` = 'M'
Hibernate Tutorials sind oft schwergewichtig und komplex. Aus diesem Grund möchte ich einen kleinen Beispiel-Code veröffentlichen, wie man in Hibernate die Attribute (Variablen) einer Java Klasse (Plain Old Java Object) in einer relationalen Datenbank (MySQL) abspeichert. Weil Hibernate ein Thema für fortgeschrittene Java-Entwickler ist, gehe ich davon aus, dass man anhand des Codes sich die Zusammenhänge erschließen kann.
Der Fehler “Failed to read auto-increment value from storage engine” wird durch einen Bug in MySQL-Datenbanken der Version 5.x verursacht. Mir ist dieser Fehler bei der Verbindung von Hibernate mit einer InnoDB-Datenbank-Tabelle aufgefallen. Beim Datenbanktyp “MyISAM” tritt dieser Bug wohl weniger häufig auf.
Man kann das Ganze wieder in Ordnung bringen, indem man folgenden SQL-Befehl ausführt:
ALTER TABLE `tabellen_name` AUTO_INCREMENT =1

0