Datenbank bei Programmstart auslesen

Julius

Mitglied
Hi,

ich würde gerne bei Programmstart Daten aus einer Datenbank auslesen und pro Zeile ein neues Java Objekt erstellen, damit ich mit diesen Daten im weiteren Verlauf arbeiten kann.
Allerdings weiss ich grad nicht so recht, wie ich das angehen sollte.
Zugriff auf die DB bekomme ich mit JDBC, SQL Abfragen und ResultSets.

Könnt ihr mir bitte einen Tipp geben?

Grüße
 

sheel

I love Asm
Hi

Wo genau liegt das Problem?

Abfragen und pro Eintrag ein neues Objekt der Datenklasse erstellen/füllen
und in zB. eine List speichern.
 

Julius

Mitglied
Bei mir würde sich die Main ziemlich füllen und ich suche daher nach einer anderen Lösung, falls möglich.
Im Moment ist es so, dass die Tabellen ausgelesen, als Objekte gespeichert und dann die Daten jeweils an den Konstruktor der Klasse übergeben werden, um sie so zu instanzieren.
 
Zuletzt bearbeitet:

sheel

I love Asm
Bei mir würde sich die Main ziemlich füllen
In eine Methode auslagern...

Im Moment ist es so, dass die Tabellen ausgelesen, als Objekte gespeichert
Du liest die kompletten Tabellen aus und bastelst dir daraus die passenden Daten zusammen?
Wie wäre es mit einer gezielten SQL-Abfrage, dann das Ergebnis zeilenweise durchgehen?

und dann die Daten jeweils an den Konstruktor der Klasse übergeben werden,
um sie so zu instanzieren.
Genau. Und nach dem Instanzieren kommt das neue Objekt in eine Liste,
weils ja beliebig viele sein können sollen (oder?).
 

Julius

Mitglied
Ich meinte jede Tabelle einzeln. Sorry habe mich kompliziert ausgedrückt.
Also war mein Weg generell richtig?
Super, dann danke für die Tipps, werde es so umsetzen.
 

youza

Erfahrenes Mitglied
Allgemein zu wie ich Daten aus einer Datenbank hole:

Ich weiß des Thema ist erledigt aber vielleicht stoßen da ja noch mehr drauf ;)

Tabelle tabPerson
IDVornameNachnameAdresse
1HugoHeickel2
2MaxMies1

Tabelle tabAdresse
IDStrasseHausnummerPostleitzahlOrt
1Musterstr10666666Buxtehude
2Musterstr20666666Buxtehude

Zu jeder Tabelle erstellst du auch eine Java Klasse mit den gleichen Datentypen und Settern und Gettern:

Java:
package com.youza.dto;

public class Person {
	private int ID;
	private String vorname;
	private String nachname;
	private Adresse adresse;
	public int getID() {
		return ID;
	}
	public void setID(int iD) {
		ID = iD;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public String getNachname() {
		return nachname;
	}
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}
	public Adresse getAdresse() {
		return adresse;
	}
	public void setAdresse(Adresse adresse) {
		this.adresse = adresse;
	}
	

}

Java:
package com.youza.dto;

public class Adresse {
	private int ID;
	private String strasse;
	private int hausnummer;
	private String plz;
	private String ort;
	public int getID() {
		return ID;
	}
	public void setID(int iD) {
		ID = iD;
	}
	public String getStrasse() {
		return strasse;
	}
	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}
	public int getHausnummer() {
		return hausnummer;
	}
	public void setHausnummer(int hausnummer) {
		this.hausnummer = hausnummer;
	}
	public String getPlz() {
		return plz;
	}
	public void setPlz(String plz) {
		this.plz = plz;
	}
	public String getOrt() {
		return ort;
	}
	public void setOrt(String ort) {
		this.ort = ort;
	}
	

}
Um das Ganze noch sauberer zu machen solltest du noch Hibernate verwenden:
http://www.hibernate.org

Die ResultSets werden dann an ArrayList<Person> arl_persons = new ArrayList<Person>(); zum Beispiel übergeben.

Ich werd dazu mal nen Blog erstellen wie man des ordentlich macht und schau das ich heut dazu komm!
 
Zuletzt bearbeitet:

youza

Erfahrenes Mitglied
Hab mir jetzt die Mühe gemacht und einen Blog zu dem Ganzen Hibernate - Java - Datenbank Zugriff geschrieben. Der Blog ist als Tutorial aufgebaut und kann komplett nachvollzogen werden:
http://www.tutorials.de/blogs/youza/11318-ubuntu-h2-database-und-hibernate-mit-java.html
http://www.tutorials.de/blogs/youza/11318-ubuntu-h2-database-und-hibernate-mit-java-next.html
http://www.tutorials.de/blogs/youza/11319-ubuntu-h2-database-und-hibernate-mit-java-teil-2-next.html

Grüße
Youza

Links gelten nicht mehr wurde selbst von der Löschung überascht vielleicht nehme ich mir irgendwann mir nochmal die Zeit um ein Tutorial draus zu machen
 
Zuletzt bearbeitet:

Julius

Mitglied
Ich habe mich jetzt etwas intensiver mit Hibernate befasst.
Es ist ja möglich darüber auch die Tabellen zu erstellen. Nur leider spuckt er bei mir da eine Menge Fehler aus, da er wohl Probleme mit der SQL Sprache hat.

Wie dem auch sei.
Ich möchte deshalb die Tabellen manuell erstellen, wenn sie noch nicht vorhanden sind.
MySQL bietet dafür "CREATE TABLE IF NOT EXISTS" an.
Klappt solange bis die Tabellen erstellt wurden.

Heisst beim zweiten Aufruf des Programms kommt folgende Fehlermeldung:
Code:
org.hibernate.exception.GenericJDBCException: Can't create table

Query dafür wird so aufgerufen:
Code:
session.createSQLQuery(query).executeUpdate();
Wobei "query" den SQL Befehl enthält.

Scheinbar wird als das "IF NOT EXISTS" missachtet und einfach munter drauf los ein Update ausgeführt.
Wieso ist das so? Wie kann ich das unterbinden?
Gibt es dafür einen anderen Update-Befehl?

Grüße