Arbeit mit DatenbankeObjekte



  • Hallo zusammen.Ich bin dabei ein größeres Projekt zu schreiben und bin nun an einer Stellen angekommen, wo ich einen Ratschlag benötige. Kurz zur Funktion des Programms : es sollen verschiedene Objekte in eine Datenbank geschrieben werden. Diese Objekte haben bestimmte Verknüpfungen untereinander, die in der Datenbank mit FOREIGN_KEYS abgebildet werden. Als Datenbankmodell verwende ich SQLITE.

    Nun mein Problem :
    Wenn ich ein Objekt A in die Datenbank schreibe, benötige ich für Objekt B die referenz ID aus der Datenbank. Im Programmcode wird die Abhängigkeit mit Objekten gelöst. Aber diese Objekte kennen die Datenbank ID nicht.

    Konkret es geht um eine Sport - Liga verwaltung :

    public class Season{
     private final List<League> leagueList;
    ...
    
    }
    
    public class League{
      private Season season;
    ...
    
    }
    

    Wenn ich nun das League Objekt schreiben will, brauche ich dafür die ID des Season Objektes. Gibt es eine Möglichkeit beim schreiben der Objekte in die Datenbank permanent die ID zu bekommen, die das angelegte Objekt bekommen hat? Ich weiß wie ein Select Befehl funktioniert aber ich denke, dass es ziemlich viel Performance kostet, nach jedem INSERT die ID abzufragen.

    Deshalb die Frage nach einer Alternative?
    Ich hoffe der Sachverhalt ist nicht zu kompliziert beschrieben.

    Vielen Dank



  • Schau dir die API an, die du verwenden willst. Nach einem Insert bekommst du die ID zurück, wenn ich die Java Datenbank API nicht komplett falsch in Erinnerung habe.

    Und schau dir ORM an, bevor du anfängst, sowas von Hand zu programmieren.



  • Danke für deine Antwort. Aber ich arbeite mit Preparestatements und führe dort executeUpdate aus. Diese Funktion liedert leider nur einen Int zurück, der die Anzahl der betroffenen Zeilen beinhaltet



  • Wenn du die Klasse PreparedStatement benutzt, schau in die Doku:

    https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

    Da steht was über generated keys.


Log in to reply