Object-Relational Mapping (ORM) - Klassen persistieren

  • Soo... endlich habe ich heute meine ORM(Object-Relational Mapping)-Klassen implementiert.
    Wer Interesse hat Klassen zu persistieren, kann mich benachrichtigen.
    Bei Interesse kann ich vorher auch ein Video machen und erklären, wie das ganze funktioniert.

    Die Klassenstruktur sieht wie folgt aus.
    Man hat eine Klasse welche man als "zu persistieren" markiert. Das geht auch automatisch.
    Nach dem Öffnen einer Datenbank-Session (derzeit läuft das Mapping nur unter der MySQL-Architektur da andere Architekturen noch nicht implementiert wurden. Dazu ist lediglich das Ableiten einer Klasse nötig und eben der Feinschliff.) kann man mithilfe der Methode save* das Objekt speichern. Der * ist ein Platzhalter.
    Es gibt nämlich hier einen gravierenden Unterschied.

    Zum einen gibt es eine Methode namens session:saveObject(die_Instanz) die, egal ob jetzt dieses Objekt bereits existiert, neu speichert.
    Und zum anderen gibt es die Methode session:saveOrUpdateObject(die_Instanz), welche das Objekt aktualisiert, wenn es vorhanden ist.

    Das sind so die wesentlichen Methoden zur Persistierung von eigenen Nutzerklassen.

    Natürlich kann man diese Objekte wieder 1 / 1 aus der Datenbank holen.
    Dafür ist lediglich ein QueryFetch-Befehl relevant, welcher so aussehen könnte.
    Es gibt zwei Möglichkeiten, die erste wäre ein implizierter Aufruf und ein explizierter Aufruf.
    Der implizierte Aufruf wäre so:

    Code
    session:queryFetchObjects("WHERE id=10", dieKlasse)


    Diese würde jetzt selbst den SELECT und FROM-Befehl generieren.

    Dann der explizierte Aufruf:

    Code
    session:queryFetchObjects("SELECT Username FROM CUser WHERE id=10")


    Der würde jetzt beim Erzeugen der Objekte nur den Usernamen aktualisieren aufgrund der Einschränkung im SELECT-Befehl.

    Das Ganze lässt sich beliebig verkomplizieren durch SubSelects oder Joins.

    Weiter Informationen können hier angefragt werden..
    Es handelt sich hier um eine sehr junge Alpha-Version.
    D. h. diese wurde vor kurzen erst angefangen und nicht ausgiebig ausgetestet.
    Die Auslieferung kann sich also noch etwas in die Länge ziehen..
    @Jusonex: was hältst du davon? Ich finde das ist schon sehr effizient. Vor allem kann man dann ausgezeichnet mit Objekten arbeiten..
    Hättest du noch was einzuwerfen?

    ~ Signatur in Bearbeitung ~

    Einmal editiert, zuletzt von Krischkros (29. Juli 2013 um 16:55)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!