+
Kurze Geschichte und Einführung Abra ist eine Java-Bibliothek und eine Reihe von Werkzeugen, die zum Speichern und Abrufen von Java-Objekt in einer relationalen Datenbank verwendet werden kann. Wir entwickelten Abra während der Arbeit an einem Start der Wall Street von Sommer 2000 bis Frühjahr 2001 Leider ist der Start Büste im Sommer 2001 ging (die Investoren bekamen kalte Füße). Zum Glück waren wir unter der BSD-Lizenz freigeben Abra als Open-Source-Paket erlaubt, da dieses Paket nichts mit Kernbussiness der eingangs genannten Start zu tun hatte. Abra erwuchs aus als eine Lösung für das Problem der in einer relationalen Datenbank Java Objekten persistierenden. Schon sehr früh haben wir erkannt, dass wir eine einfache Persistenz-Schicht benötigt und dass wir wollen keinen SQL Hand schreiben. Wir sahen mehrere Pakete (z. B. Castor, TopLink, CocoBase), aber keiner schien unser Ziel und angesichts immenser Planungsdruck zu passen haben wir beschlossen, die Persistenz-Schicht selbst zu wachsen, wie wir entlang Aufbau des Systems ging. Die wichtigsten Design-Entscheidungen Wir wurden von mehreren ausgezeichneten Artikel auf Persistenz-Schicht-Design von Scott Ambler (siehe Links unten) stark inspiriert. Wir passten einige seiner Designvorschläge mit exzellenten Ergebnissen. Wir wollten auch Dinge einfach zu halten und in der Lage sein, automatisch generieren alle mühsame Code (wie der SQL / JDBC-Aufrufe usw.). Mapping - Wir wählten die einfache Zuordnung von Klassen zu Tabellen. Nur Blattklassen einer Vererbungshierarchie auf Tabellen erhalten abgebildet und die Abbildung ist kanonisch. Das ist jedes Attribut einer Klasse wird auf eine Spalte zugeordnet. Objekt Ids - Jedes Objekt in der Datenbank hat eine eindeutige (für seine Art) Objekt-ID. Die Objekt-ID wird als Datenbank "Zeiger" verwendet, um Beziehungen zwischen Objekten zum Ausdruck zu bringen und hat keine andere Bedeutung bussiness (dies ist gerade aus Ambler). Datenklassen - Eine einzelne XML-Konfigurationsdatei beschreibt alle persistenten Objekte und die tatsächliche Zuordnung von Attributen zu den Tabellen (diese Idee wurde "gestohlen" aus dem Castor-Projekt). Wir wollten den Code für alle persistenten Klassen auf diese Datei zu generieren. Deshalb haben wir beschlossen, die persistente Klassen sehr einfach zu machen, sie nur Daten halten und Getter und Setter-Methoden haben. Factory-Klassen - Datenklassen enthalten keine Datenbankcode. Factory-Klassen (die teilweise erzeugt werden) werden verwendet, um Objekte aus der Datenbank zu speichern und abzurufen und alle Datenbank-spezifischen Code geht in die Fabriken. Beziehungen - Eins zu eins Beziehungen werden als einfacher Java Referenzen dargestellt. Eine zu viele Beziehungen werden als Vektoren von Objekten dargestellt und viele, viele erfordern Einsatz spezieller ManyToMany Fabriken, die die entsprechenden Abrufmethoden zur Verfügung stellen. Ansichten - Es ist möglich, schreibgeschützte Ansichten von Datenobjekten zu definieren. Eine Ansicht ist einfach eine andere Java-Klasse, die eine Teilmenge der Attribute seiner Quellklasse umfasst. Manchmal kann Ansicht Objekte von Abfragen zurückgegeben werden (falls der vollständige Objekt ist zu komplex und brauchen Sie nur Teile davon für die Anzeige). Haupteigenschaften XML-Konfigurationsdateien fahren Generation von Java-Klassen und Datenbankschema. Die Meta-Daten aus XML können auch die generierten Klassen zu marshall verwendet werden, um und aus XML. Verwendet JDBC auf die Datenbank zugreifen. Alle SQL-Code wird in Factory-Klassen generiert. Abfragen werden aufbauen mit Hilfe von Java-Objekten (Filterklassen) und SQL ", wobei" Klauseln zur Laufzeit dynamisch erstellt werden. Funktioniert mit Oracle und PostgreSQL, MySQL, DB2 / UDB, Sybase (Stand: 02.09), (DB2 / 400-Schnittstelle in den Werken von Eric Meritt (2/02)) Einfache Zuordnung zwischen Datenbanktabellen und Java-Objekte, die eins zu eins, eins zu mehreren, und viele, viele Beziehungen unterstützt. Einfach (aber erweiterbar) Transaktionsmanagement. Pro Transaktion zwischenspeichert. Kann in großem Umfang verteilten Anwendungen verwendet werden - sorgt für konsistente Sicht auf Daten in der Datenbank (neueste Daten zur Verfügung stehen, wenn Sperren erhalten werden). Zusatzfunktionen XMLMarshaller, die die XML-Map-Datei kann gehen zu / von XML auf die Datenklassen definiert. Die Validierung kann in der XML-Konfigurationsdatei beschrieben und Antriebsgeneration von Validatoren in einem einfachen Datenvalidierung Rahmen. Einfache Composites (dh Betrag (Currency: String; Wert: double)) kann im Containerobjekt inlined werden (so wie die Anzahl der Tabellen / beitritt zu reduzieren). Ein schneller XML-Parser die JavaCup Paket verwendet, die anstelle von Xerces in Erzeugung und Rangier verwendet werden kann. Immer größer werdenden von JUnit-Tests festgelegt. In Arbeit DTD-> Mapfile Generator. DTDs nicht so viele Informationen wie unsere Mapfile, enthalten so eine DTD in unsere mapfile konvertieren, die für jeden Dtd Knoten Java-Klassen bewiesen wird, und die Fähigkeit, und von ihnen zu Marschall. Dokumentation Hier ist die aktuelle Javadoc und die Bedienungsanleitung dazu eine Anleitung, um einen einfachen Benutzer Beispiel. Mailingliste Es gibt eine Mailingliste für Diskussionen von Abra hier. Wenn möglich, bitte posten Fragen zur Liste hinzu. Links Bemerkungen
boutiquevilleneuvesaintgeorges.blogspot.com
No comments:
Post a Comment