Wie funktioniert ORM unter der Decke? Auch was ist der beste Weg, persistente Objekte in Java haben?

StackOverflow https://stackoverflow.com/questions/1231295

  •  22-07-2019
  •  | 
  •  

Frage

Wie funktioniert ORM arbeiten? Sind Objekte in BLOBs serialisiert?

In Java ist JDO immer noch der Weg für diese zu gehen? Was sonst noch zur Verfügung steht? Scheint, wie es war von EJB, direkte Objektserialisierung und JDO viel von sich reden.

War es hilfreich?

Lösung

Ihre erste Frage zu beantworten, hier ist ein Auszug aus Hibernate , die besagen, dass es verschiedene Möglichkeiten zur Umsetzung ORM sind:

  

Reiner relationale

     

Die gesamte Anwendung, einschließlich der   Benutzerschnittstelle, die ausgelegt ist um   relationales Modell und SQL-basiertes   relationale Operationen. Dieser Ansatz,   trotz ihrer Mängel für große   Systeme können eine ausgezeichnete Lösung sein   für einfache Anwendungen, bei denen eine niedrige   Niveau der Wiederverwendung von Code ist erträglich.   Direkte SQL werden kann in jeder feinabgestimmt   Aspekt, aber die Nachteile auf, wie beispielsweise   Mangel an Portabilität und   Wartbarkeit, sind signifikant,   vor allem auf lange Sicht.   Anwendungen dieser Kategorie häufig   macht die starke Nutzung von Stored Procedures,   Verschieben der einen Teil der Arbeit aus   Business-Schicht und in die Datenbank.

     

Lichtobjektzuordnung

     

Entities werden als Klassen vertreten   , die manuell auf die kartiert   relationale Tabellen. Hand codierte SQL / JDBC   wird von der Geschäftslogik verborgen   mit bekannten Design-Patterns.   Dieser Ansatz ist extrem weit verbreitet   und erfolgreich für Anwendungen   mit einer kleinen Anzahl von Einheiten, oder   Anwendungen mit generischen,   Metadaten gesteuerte Datenmodelle. Gelagert   Verfahren könnte einen Platz in diesem hat   Art der Anwendung.

     

Medium Objektzuordnung

     

Die Anwendung ist um ein entworfen   Objektmodell. SQL erzeugt wird, an   Zeit baut eine Codeerzeugung unter Verwendung von   Werkzeug oder zur Laufzeit von Rahmencodes.   Assoziationen zwischen Objekten sind   durch die Persistenz unterstützten   Mechanismus und Abfragen können   spezifiziert unter Verwendung einer objektorientierten   Ausdruckssprache. Objekte sind   durch die Persistenz-Schicht zwischengespeichert. EIN   Sehr viele ORM Produkte und homegrown   Persistenzschichten Träger mindestens   Dieses Maß an Funktionalität. Es ist gut   geeignet für mittelgroße Anwendungen   mit einigen komplexen Transaktionen,   insbesondere, wenn die Portabilität zwischen   verschiedene Datenbankprodukte ist   wichtig. Diese Anwendungen meist   nicht gespeicherte Prozeduren verwenden.

     

Vollobjektzuordnung

     

Vollständige Objektzuordnung unterstützt   anspruchsvolle Objektmodellierung:   Zusammensetzung, Vererbung,   Polymorphismus und „Persistenz von   Erreichbarkeits“. Die Persistenz-Schicht   implementiert transparent Persistenz;   persistente Klassen erben nicht   spezielle Basisklasse oder müssen   eine spezielle Schnittstelle implementieren.   Effiziente Fetching-Strategien (faul   und begierig fetching) und Caching   Strategien umgesetzt werden   für die Anwendung transparent. Diese   Funktionalitätsniveau kaum sein   durch eine homegrown Beharrlichkeit erreicht   Schicht-es ist äquivalent zu Monaten oder   Jahre Entwicklungszeit. Eine Zahl   von kommerziellen und Open-Source-Java ORM   Werkzeuge haben dieses Niveau erreicht   Qualität. Dieses Niveau entspricht der   Definition von ORM wir in diese mit   Buch. Schauen wir uns die Probleme sehen wir   erwarten von einem Werkzeug gelöst werden, dass   erreicht volle Objektzuordnung.

Andere Tipps

ORM = Object Relational Mapping, Attribute der Objekte sind Spalten in der realational Datenbank abgebildet. Das Mapping ist beliebig, so dass zu Blobs getan werden könnte, in der Praxis, was ist am nützlichsten, neigt dazu, natürliche Mappings -. Strings Varchars, int auf ganze Zahlen etc

JPA ist der richtige Ort für einen Standard für ORM zu suchen. JPA ersetzt den EJB CMP-Ansatz, der zu umständlich gefunden wurde. JPA ermöglicht es Ihnen, die Zuordnung als Java-Annotationen zum Ausdruck bringen und ermöglicht auch die Zuordnungen in configutration Dateien angegeben werden, wenn die Unterstützung multip [le Datenbanken letztere nützlich sein kann.

JPA hat eine Abfragesprache, so dass Sie Abfragen für Objektattribute konstruieren können.

JPA wird von den großen App Server-Herstellern unterstützt und auch durch Produkte wie Hibernate.

Ich fand JPA ziemlich nett, mit zu arbeiten, um so mehr als EJB CMP.

Ich würde empfehlen, noch EJB Session Beans -fassaden Transaktion mamangement und Sicherheit mit -. Der Annotation-basierten Ansatz macht EJB 3 Weg einfacher zu benutzen als EJB 2, minimaler Codierung Kopf

JDO ist eigentlich Standard ORM zu und stellt eine vollständigere eine Spezifikation als JPA (1 + 2). JPQL ist fokussierter auf RDBMS Konzepte und damit SQL nachahmt. JDOQL folgt Java-Syntax so wird mehr Objekt basiert. Hängt wenn Ihre Anwendung jemals von RDBMS gehen weg betrachtet wird. Wenn ja, dann ist JPA nicht der Weg zu gehen. Wenn es nur für RDBMS ist dann JPA ist auf jeden Fall eine Überlegung.

Ob Objekte in BLOBs serialisiert werden, hängt von der Konfiguration. Sie können die Typen für komplexe Objekt tun, wenn Sie wollen, aber dann werden sie nicht abfragbar sein. Wenn Sie statt sie in nativer Form bestehen bleiben, dann können Sie diese auch abfragen, was zu einem effizienteren Anwendungen.

- Andy (Datanucleus - JDO und JPA Persistenz)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top