Hibernate: Query verarbeiten

Donke5

Mitglied
Hallo,
ich habe eine MySQL-DB, in der ich über Hibernate Kunden und Aufträge speichern will.
Das anlegen der Daten funktioniert einwandfrei, nur beim rausholen von Daten aus der DB habe ich Probleme.
Die Tabelle Kunde hat als Felder nur id (Primärschlüssel), Name und Adresse.

So sieht meine Methode getKunde aus:
Java:
 public static void getKunde() {
        kundenListe.clear();
        Session session = InitSessionFactory.getInstance().getCurrentSession();
        Transaction tx = session.beginTransaction();
        Query query = session.createQuery("from Kunde where id = 1");
        List<Kunde> list = query.list();
        java.util.Iterator<Kunde> iter = list.iterator();
        while (iter.hasNext()) {
            Kunde kunde = new Kunde();            
            kunde = list.get(0);
            kundenListe.add(kunde);
        }
        tx.commit();        
    }

Dazu muss ich sagen, dass ich bis vor 2 Wochen keinerlei Erfahrung mit Datenbanken in Verbindung mit Java hatte. Ich muss das für ein Testat in Verbindung mit einer Java-Vorlesung machen. Da muss ich mich jede Woche in ein neues Thema einarbeiten.
Sehe ich das überhaupt richtig, dass das Ergebnis der query als Objekt der Klasse Kunde in der liste "list" gespeichert wird?
 
S

SlaterB

Gast
dein Problem hat ziemlich wenig mit einer DB zu tun, vielleicht wird dir hier alles etwas klarer,

versuche folgendes Programm zu verbessern (bisher Endlosschleife),
schau dir in einem Buch den Umgang mit Listen, Iteratoren an?
Java:
public class Test {
    public static void main(String[] args)  {
        List<String> kundenListe = new ArrayList<String>();
        kundenListe.clear();
        List<String> list = loadKunden();
        java.util.Iterator<String> iter = list.iterator();
        while (iter.hasNext())  {
            System.out.println("schleifendurchlauf");
            String kunde = null;
            kunde = list.get(0);
            kundenListe.add(kunde);
        }
        System.out.println("kundenListe: "+kundenListe);
    }
    public static List<String> loadKunden()  {
        List<String> l = new ArrayList<String>();
        l.add("John");
        l.add("Rambo");
        return l;
    }
}
 
M

maki

Gast
Java:
            Kunde kunde = new Kunde();            
            kunde = list.get(0);
            kundenListe.add(kunde);
Wozu soll die erste Zeile gut sein?
Erst ein Objekt anlegen und dann die Referenz darauf auf ein anderes setzen?
 

Donke5

Mitglied
dein Problem hat ziemlich wenig mit einer DB zu tun, vielleicht wird dir hier alles etwas klarer,

versuche folgendes Programm zu verbessern (bisher Endlosschleife),
schau dir in einem Buch den Umgang mit Listen, Iteratoren an?
Wenn ich das richtig verstehe lege ich in Zeile 7 einen Iterator an, der die gleiche Länge hat wie meine Liste aus Zeile 6, in der die Ergebnisse aus der Query gespeichert sind.
Warum kann ich dann aber nicht einfach eine for-Schleife nehmen, die ich mit list.length durchlaufen lasse? Oder gleich für query.list().size()?

Deine Klasse Test verstehe ich nicht so richtig. Soweit ich das sehe wird der Iterator doch die Länge 1 haben und damit die Schleife einmal durchlaufen!

Java:
    public static void getKunde() {
        kundenListe.clear();
        Session session = InitSessionFactory.getInstance().getCurrentSession();
        Transaction tx = session.beginTransaction();
        Query query = session.createQuery("from Kunde where id = 1");
        List<Kunde> list = query.list();
        java.util.Iterator<Kunde> iter = list.iterator();
        while (iter.hasNext()) {            
            kundenListe.add(iter.next());
        }
        tx.commit();        
    }

@maku: Stimmt, die Zeile ist sinnlos. So wie ich es oben habe funktioniert es jetzt.
 
S

SlaterB

Gast
Iteratoren haben keine Längen oder size, ihre Funktionsweise hängt aber sicherlich von der Größe der zugehörigen Liste ab, richtig

aber jetzt hast du ja auch iter.next() drin, ohne diesem Aufruf geht gar nix bei Iteratoren,
was war nun noch die offene Frage?

> Warum kann ich dann aber nicht einfach eine for-Schleife nehmen, die ich mit list.length durchlaufen lasse?

wer verbietet das?
query.uniqueResult() geht hier gar noch besser ohne jede Liste

> Sehe ich das überhaupt richtig, dass das Ergebnis der query als Objekt der Klasse Kunde in der liste "list" gespeichert wird?

richtig
 
S

SlaterB

Gast
entweder kein Commit beim Speichern oder ein Löschen zwischendurch,
mit separaten DB-Tool und Beobachtung zwischendurch zumindest das entweder/ oder zu unterscheiden
 

Donke5

Mitglied
entweder kein Commit beim Speichern oder ein Löschen zwischendurch,
mit separaten DB-Tool und Beobachtung zwischendurch zumindest das entweder/ oder zu unterscheiden

Hier meine Methode zum Speichern:

Java:
 public static Kunde createKunde(String name, String adresse) {
        Kunde kunde1 = new Kunde();
        kunde1.setName(name);
        kunde1.setAdresse(adresse);
        Session session = InitSessionFactory.getInstance().getCurrentSession();
        Transaction tx = session.beginTransaction();        
        session.saveOrUpdate(kunde1);
        tx.commit();
        return kunde1;
    }

Wenn der Code oben richtig ist wüsste ich nicht wo ich die Daten sonst lösche.
Es wird übrigens nicht beim Beenden gelöscht, sondern wenn ich eine neue Abfrage (from) starte.
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 5909

Gast
Notiz am Rande:

Wieso machst du bei einem Select eine Transaktion auf?

Das hat mit Java nix zu tun
 

Donke5

Mitglied
Notiz am Rande:

Wieso machst du bei einem Select eine Transaktion auf?

Das hat mit Java nix zu tun

Hmm keine Ahnung. Das Thema mit den Transaktionen und Sessions hab ich eh noch nicht so richtig verstanden...
Das Problem ist, dass ich vor 2 Monaten in der Vorlesung ohne Programmiererfahrung mit Java angefangen habe.
Und da wir jede Woche eine Aufgabe machen müssen muss ich schauen, dass ich die zeitlich auf die Reihe bekomme.
Meiner Meinung nach zieht das Niveau so schnell an, da habe ich einfach nicht die Zeit dazu mich immer gut in ein Thema einzuarbeiten.
Bei dem Hibernate-Thema z.B. habe ich einfach ein Hibernate-Tut genommen und es für meinen Bedarf umgebaut.
Jedenfalls habe ich das Probiert.
Deswegen: Ich probiere mich ohne viel Hintergrundwissen an dem Thema...
Am Sonntagabend wartet ja schon das nächste...
 
G

Gelöschtes Mitglied 5909

Gast
Nach zwei Monaten ohne Programmiererfahrung gleich Hibernate machen zu müssen ist schon heftig. Dann drück ich dir mal die Daumen, hoffe du bist nicht allzu gefrustet und dann wird das schon mit der Zeit :)
 

Donke5

Mitglied
Danke. Auch für die Geduld hier. ;)
Ich habe vor in den Semesterferien (nach der Prüfung in Programmieren) mal ein Java-Buch durchzuarbeiten. Vielleicht mache ich mich dann auch nochmal an das Thema Hibernate ran.
Ich hasse es einfach an was zu arbeiten ohne das Hintergrundwissen zu haben...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
M List aus Hibernate Query Datenbankprogrammierung 5
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
D Hibernate, Criteria Query Datenbankprogrammierung 2
P [Hibernate] Criterion-Query in HQL übersetzen Datenbankprogrammierung 10
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
qwerqer [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15
Z JPA mit Hibernate - Unable to build EntityManagerFactory Datenbankprogrammierung 7
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
K Hibernate vs. JDBC Datenbankprogrammierung 4
J Hibernate Info 593 ? Datenbankprogrammierung 4
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben