Benutzername    Passwort    Autologin    
  Passwort vergessen       Registrieren  
beeForum Foren-übersicht » hal9000
Neues Thema eröffnen   Neue Antwort erstellen Hervorhebung entfernen


DLW 2008: ORMs, why should I care?
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
boris



Beiträge: 11194

Titel: DLW 2008: ORMs, why should I care?
Verfasst am: Sa, 18 Apr 2009, 12:01
Beitrag
Antworten mit Zitat

ORMs, why should I care?

Lukas Smith, LIIP
28.5.2008, 8:30, Raum 1.26, ca. 20 Personen

  • ORM = Object-Relational Mapping
    bezeichnet die Technik, Objekte aus einer objektorientierten Programmiersprache direkt in eine (relationale) Datenbank schreiben (und daraus wieder lesen) zu können.
    Dieser Vortrag orientiert sich am ORM "Doctrine", an der der Referent mitenwickelt.
    (Aus der Java-Welt ist z.B. "Hibernate" bzw. von .NET "NHibernate" bekannt)

  • Vorteile von ORMs
    Es werden keine Datenbank-Queries mehr direkt in den Code geschrieben, bei einer Portierung von einer Datenbank-Engine auf eine andere muss nur ein Flag umgestellt werden, der Code wird portabel (wobei 100% Kompatibilität ein Mythos ist).
    Das aufwändige Umwandeln ("Mapping") aus der Objekt- in eine relationale Struktur entfällt. Business-Logik kann direkt auf Objekte aus der Datenbank angewendet werden.
    Caching kann global oder per Query ein-/ausgeschaltet werden.
    Das Datenmodell kann zentralisiert abgelegt / gepflegt werden.
    Bestehende Modellklassen können durch Plugins einfach erweitert werden.
    Nicht unterstützte Datenbank-Features werden emuliert (z.B. "LIMIT" in Subselects in mySQL).
    Die für das Speichern nötige Datenbank-Struktur kann aus einer YAML-Datei (Feldbeschreibung, angelegt an XML) automatisch erstellt werden.
  • Nachteile von ORMs
    Es gibt immer einen gewissen "Overhead" (Mehr an Laufzeit / Code), der allerdings durch die deutlichen Vorteile kaum ins Gewicht fallen dürfte und durch Caching minimiert werden kann.
  • Anwendungsmöglichkeiten
    Queries können automatisch geändert werden (sog. "listener hooks", die beim Aufruf von Queries mit eigenem Code "einspringen"). So kann z.B. eine "DELETE"-Anweisung einfach per Flag in der Konfiguration automatisch in eine "UPDATE SET deleted = true"-Anweisung geändert werden (sog. "SoftDelete"), der Datensatz wird also nicht gelöscht sondern nur als gelöscht markiert.
    Alle folgenden "SELECT"-Anweisungen (es sei denn, sie greifen auf das Feld "deleted" zu) werden dann automatisch mit "WHERE deleted = false" erweitert. So kann das Löschen von Datensätzen verhindert werden, die vom ORM gelieferten Ergebnisse verhalten sich aber (außer bei einer expliziten Abfrage danach) so, als seien die Datensätze wirklich nicht mehr vorhanden.
    Daten können vor dem Speichern automatisch validiert werden.
    "Lazy Loading": Objekt-Properties werden erst beim Zugriff darauf aus der Datenbank geholt. Mit "Load Related" werden alle zusätzlichen Felder der vorher geholten Objekte nachgeladen.
    Das komplette und einfache Laden und Speichern eines kompletten "Trees" (Objekt-Hierarchie) aus/in der Datenbank.

Fazit: Sehr gut dargebotener, fundierter Vortrag, der teilweise auch Nachteile des vorgestellten ORM ansprach und kritisch beleuchtete (sehr selten auf der DLW, hier waren 90% der vorgestellten Sachen immer ausnahmslos super).


Ressourcen:
http://pooteeweet.org/files/ipc08spring/doctrine_orm.pdf
http://www.liip.ch
http://www.phpdoctrine.org

Programminfo:
Most PHP developers are followers of the KISS principle: keep it simple stupid! Not a bad idea at all. The result is that most PHP applications are easy to setup and maintain, much to the contrary of the average Java web application.

ORM, object relational mapper, do not seem to fit this mantra well. Worse yet they carry with them the stigmata of being associated with Java. The PHP world was therefore much more receptive of the more lightweight ActiveRecord approach that was popularized with Ruby on Rails.
However, the presenter of this talk, far from a Java lover, will try to pitch one of the more feature rich ORM for PHP to the audience. If that is not darin enough, it should be noted that the ORM that will be the focus of the talk is Doctrine, which has been heavily inspired by Java's most popular ORM Hibernate. After an introduction and several examples of very high level features of Doctrine, the audience will hopefully help round off this talk with a lively discussion at the end.


____________
beehave - home of humbug ... [we can't afford to be neutral]

Nach oben
Private Nachricht senden Website dieses Benutzers besuchen Rang:godmode methusalem 3. platz professioneller Sportangler Profi-Winzer (7x Hamm) Arcade-Meister, Rang 16 rainbow-cup
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    beeForum Foren-übersicht » hal9000 Seite 1 von 1
Gehe zu:  



ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Sie hören gerade..... (2008) Frederik silikonimplantate 153 Do, 17 Sep 2009, 22:48 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Understanding the PHP Object-Model boris hal9000 0 Sa, 18 Apr 2009, 12:27 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Advanced Object-Oriented JavaScript boris hal9000 0 Sa, 18 Apr 2009, 12:21 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Speaker Panel: Top Speakers from Ruby, Groovy boris hal9000 0 Sa, 18 Apr 2009, 12:16 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Metaprogramming with Ruby boris hal9000 0 Sa, 18 Apr 2009, 12:13 Letzten Beitrag anzeigen


Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
phpBB © phpBB Group | impressum