e-movimento Software Design & Beratung GmbH
1030 Wien ● Marxergasse 7/26 ► www.e-movimento.com
Objekt-Relationales Mapping
Von Java zu relationalen DBs
Vorstellung
 Name: DI Sebastian Dietrich
 Tätigkeiten:
 Java-Softwareentwickler & Softwarearchitekt
 Teamleiter & Scrum-Master
 Berater, Trainer
 Überzeugungen & Leidenschaften:
 Technische Qualität & Produktivität
 Praxiserfahrung & theoretischer Background
 Agile Softwareentwicklung, Java, Android, Wikipedia
 Kontakt:
 mailto://Sebastian.Dietrich@e-movimento.com
 http://managing-java.blogspot.co.at
 http://de.wikipedia.org/wiki/Benutzer:Sebastian.Dietrich
► www.e-movimento.com, Sebastian Dietrich2
► www.e-movimento.com, Sebastian Dietrich3
Objekt-Relationales Mapping
Warum überhaupt objektorientiert?
http://www.tiobe.com
► www.e-movimento.com, Sebastian Dietrich4
Objekt-Relationales Mapping
Warum überhaupt relational?
http://www.joinvision.com
Objekt-Relationales Mapping
Unterschiede Objektorientiert – Relational
OO Konzepte
 Vererbung
 Polymorphie
 Kapselung
 Objektbeziehungen
 Identität über Adressen
 Programm. Integrität
 keine Transaktionalität
RDB Konzepte
 keine Vererbung
 keine Polymorphie
 keine Kapselung
 Relationen
 Identität über Schlüssel
 Referentielle Integrität
 Transaktionalität
► www.e-movimento.com, Sebastian Dietrich5
Aber nicht nur die Konzepte unterscheiden sich…
Unterschiede Objektorietiert – Relational
Object-Relational Impedance Mismatch
 Ein gutes Objektmodell…
 Ist optimiert für (sich laufend ändernde) fachliche Anforderungen
 Definiert Fachdaten (Businessobjekte) und deren Logik
 Verwendet Fachtermini („ubiqutous language“)
 Wird (meist) für jede Applikation neu & völlig anders definiert
 Wird laufend refaktorisiert
 …
 Ein gutes Datenbankschema…
 Vermeidet Redundanzen mittels Normalformen
 Optimiert Leistung
 Stellt Konsistenz und Integrität der Daten sicher
 Ist (meist) applikationsübergreifend
 …
Object-
Relational
Impedance
Mismatch
► www.e-movimento.com, Sebastian Dietrich6
Object-Relational Impedance Mismatch
Unterschiede
 Struktur: Objekt = Daten + Verhalten, Vererbung
 Instanz: Objektzustand = Daten + Referenzen
 an einem Objekt hängt potentiell die gesamte DB
 Kapselung: Attribute können von außen nur über wohldefinierte
Zugriffsmethoden verändert werden
 Identität: Objektidentität von seinen Daten unabhängig  Daten
reichen nicht um Identität in OO zu bestimmen
 Arbeitsweise: OO = Netzwerk interagierender Objekte, Zugriff auf
Objekte über Referenzen, keine Transaktionen, keine
mengenbasierte Arbeitsweise
 Verantwortlichkeit: Objektmodell in Verantwortlichkeit der
Entwickler einer Applikation, unterliegt ständiger ungeplanter
Änderung
 Sprachwechsel: SQL vs. Java, Unterschiedliche Typsysteme,
unterschiedliche Behandlung komplexer Typen, Wertobjekte
► www.e-movimento.com, Sebastian Dietrich7
Object-Relational Impedance Mismatch
Lösung
 Unterschiedliche Lösungsansätze:
 Objektorientierte Datenbanken
 Objektbasierte Datenbanken
 Relationale Funktionen in Sprachen (Embedded SQL)
 XML-DBs, Triplestores, …
 NoSQL (Google BigTable, Amazon Dynamo, CouchDB, ...)
 Objektrationale Mapper (O/R Mapper)
 Ideale Lösung?
Keine ideale Lösung möglich – nur Umgehungen des
Problems. Wartbarkeit vs. Performance
30 - 40% der Entwicklungszeit geht in OR-IM
[C. Keene 2004]
► www.e-movimento.com, Sebastian Dietrich8
Object-Relational Impedance Mismatch
Abbildung von Vererbung OO  RDB
 Abbildung von Vererbung = Ein Teilaspekt des ORIM
 Nicht Trivial  Lösung: Objekt-Relational-Mapper (= OR-
Mapper)
Mitarbeiter
Interner Externer
<<abstract>>
Person
Person
Mitarbeiter
Interner
Externer
?
► www.e-movimento.com, Sebastian Dietrich9
Abbildung von Vererbung OO  RDB
Lösungswege
 „Single Table“, „Table per class-
hierarchy“, „Filter-Mapping“
 1 Tabelle für alle Attribute der
Basisklasse und davon abgeleiteten
Klassen, dazu "Diskriminator" = Typ
des Objektes
 „Joined“, „Table per subclass“,
„Vertikales Mapping“
 1 Tabelle für Basisklasse angelegt
und für jede davon abgeleitete
Unterklasse, 1:1 Beziehungen
dazwischen
 „Table per concrete class“,
„Horizontales Mapping“
 1 Tabelle für konkrete Unterklassen
inkl. Attribute abstrakter Basisklassen
Person
Attribute von
Person, Mitarbeiter,
Externer und Interner
+ Typkennzeichen
Person Mitarbeiter
Interner Externer
Mitarbeiter
inkl. Attr.
von Person
Interner
inkl. Attr. von
Person &
Mitarbeiter
Externer
inkl. Attr. von
Person &
Mitarbeiter
► www.e-movimento.com, Sebastian Dietrich10
Abbildung von Vererbung OO  RDB
Weitere Lösungswege
 „General" = Generelle Tabellen
 Eine Tabelle für Klassen
 Eine für Beziehungen (inkl.
Vererbung)
 Eine für Attribute
 Eine für Instanzen
 Eine für Werte
► www.e-movimento.com, Sebastian Dietrich11
Abbildung von Vererbung OO  RDB
Vor- und Nachteile
 "Single Table"
 DB Struktur typisch für RDBs
 einfacher für DBAs
- Verbraucht mehr Speicherplatz
- Probleme mit "NOT NULL"
 "Joined"
 DB Struktur passt zur OO
Struktur  einfachere
Integration
- Performance (joined Queries
für Listen unterschiedlicher
Typen)
 "Table per Class"
- Performance (mehrere Queries
für Listen unterschiedlicher
Typen)
Person
Attribute von
Person, Mitarbeiter,
Externer und Interner
+ Typkennzeichen
Person Mitarbeiter
Interner Externer
Mitarbeiter
inkl. Attr.
von Person
Interner
inkl. Attr. von
Person &
Mitarbeiter
Externer
inkl. Attr. von
Person &
Mitarbeiter
► www.e-movimento.com, Sebastian Dietrich12
Objekt-Relational Impedance Mismatch
Faulheitsprinzip
 Das Rad nicht neu erfinden:
 Mein Programm ist nicht das
erste, das auf eine DB zugreift
 30-40% des gesamten
Codierungsaufwandes gehen
in ORIM
 Frameworks
 Spring JDBC
 iBATIS
 JDO, JPA
 Hibernate, EclipseLink, …
 Ist eine Datenbank wirklich
nötig? Alternativen:
 RAM (BigMemory)
 Archive, Bibliotheken, …
 Konfigurationsdateien
 Files, XML, Serialisierte
Objekte, Preferences, …
 OODBs, XML-DBs,
Semantische DBs
 Was sind Vorteile von DBs?
 Schneller?
 Skalierbarer?
 Größer?
► www.e-movimento.com, Sebastian Dietrich13
JDBC
myBATIS
DB
EasyBeans, TopLink,
OpenJPA, EclipseLink,
Cayenne, Hibernate,
DataNucleus
JBoss, WebSphere, OC4J,
Geronimo, Glassfish
Persistenzlayer und OR Mapper in Java
Architekturelle Positionierung
JDBC
Persistenz Layer
OR Mapper
DB
JDO / JPA Container
EJB App Server
Spring-JDBC
DbUtils, DBCP
► www.e-movimento.com, Sebastian Dietrich14
► www.e-movimento.com, Sebastian Dietrich15
Persistenzlayer und OR Mapper in Java
Hibernate
 Hibernate = OR Mapper von JBoss (RedHat)
 Persistenzmechanismus von Jboss Application Server
 Features:
 Abfragen mittels SQL, HQL, Criteria API, Stored Procedures
 POJOs ↔ Mapping / Annotations ↔ DB Tabellen
 Transaktionen, Caches, Lazy Loading, Kaskadierungen, …
 Weitere Features:
 EntityManager – Verwendung von Hibernate via JPA
 Shards – horizontal partitionierte DBs
 Validator – Daten Integrität & Validierung
 Tools – Eclipse & Roundtrip Engineering
 Search – Volltextindices & -suche
► www.e-movimento.com, Sebastian Dietrich16
AppHibernate
Persistenzlayer und OR Mapper in Java
Hibernate Architektur
 Transient Objects
 Aktuell nicht an Session hängende
persistente Objekte (POJOs)
 Persistent Objects
 An Session hängende Objekte mit
persistentem Status (POJOs)
 SessionFactory
 Factory für Sessions
 Precompiled Query Cache
 Session
 Kommunikation zwischen
Anwendung und Datenbank
 Kapselt JDBC-Verbindung
 Cache von persistenten Objekten
 Hat 1..N Transaktionen
 Transaction
 ACID Arbeitseinheit
 JDBC, JTA, … Transaktionen
Java JNDI JDBC JTA
DB
TransactionSession
Session Factory
Connection
Provider
TransactionFactory
Persistent
Objects
Transient
Objects
► www.e-movimento.com, Sebastian Dietrich17
Persistenzlayer und OR Mapper in Java
Hibernate Beispiel
 Tabelle KUNDE:
 Java Klasse (POJO):
public class Kunde {
private int id;
private String name;
private String ort;
private String strasse;
private int plz;
// no getter & setter
}
 Hibernate Configdatei für DB-,
SQLDialekt-, Caching- … Config
 Hibernate Mappingdatei:
…
<class name="Kunde"
table="KUNDE">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="name" />
…
</class>
…
 Java Code:
session.beginTransaction();
List kunden = session
.createQuery("from KUNDE")
.list();
session.getTransaction()
.commit();
return kunden;
Attribut Typ
ID INTEGER NOT NULL
PRIMARY KEY
NAME VARCHAR(128)
STRASSE VARCHAR(128)
ORT VARCHAR(128)
PLZ INTEGER
► www.e-movimento.com, Sebastian Dietrich18
Hibernate Beispiel
Mapping von Vererbung mittels Annotations
 Table per Subclass = „Joined“:
 Hibernate Annotations:
@Entity @Table(name=„PERSON“)
@Inheritance(strategy=JOINED)
public class Person {
@ID @GeneratedValue
@Column(name=„PERSON_ID“)
private Long personId;
…
@Entity @Table(name=„MITARBEITER“)
@PrimaryKeyJoinColumn
(name=„PERSON_ID“)
public class Mitarbeiter
extends Person {
…
@Entity @Table(name=„INTERNER“)
@PrimaryKeyJoinColumn
(name=„PERSON_ID“)
public class Interner
extends Mitarbeiter {
…
Mitarbeiter
Interner Externer
<<abstract>>
Person
Person Mitarbeiter
Interner Externer
► www.e-movimento.com, Sebastian Dietrich19
Vielen Dank für Ihre Aufmerksamkeit!
Q&A[Sebastian Dietrich]
Sebastian.Dietrich@e-movimento.com
http://managing-java.blogspot.com

Objekt-Relationales Mapping - von Java zu relationalen DBs

  • 1.
    e-movimento Software Design& Beratung GmbH 1030 Wien ● Marxergasse 7/26 ► www.e-movimento.com Objekt-Relationales Mapping Von Java zu relationalen DBs
  • 2.
    Vorstellung  Name: DISebastian Dietrich  Tätigkeiten:  Java-Softwareentwickler & Softwarearchitekt  Teamleiter & Scrum-Master  Berater, Trainer  Überzeugungen & Leidenschaften:  Technische Qualität & Produktivität  Praxiserfahrung & theoretischer Background  Agile Softwareentwicklung, Java, Android, Wikipedia  Kontakt:  mailto://Sebastian.Dietrich@e-movimento.com  http://managing-java.blogspot.co.at  http://de.wikipedia.org/wiki/Benutzer:Sebastian.Dietrich ► www.e-movimento.com, Sebastian Dietrich2
  • 3.
    ► www.e-movimento.com, SebastianDietrich3 Objekt-Relationales Mapping Warum überhaupt objektorientiert? http://www.tiobe.com
  • 4.
    ► www.e-movimento.com, SebastianDietrich4 Objekt-Relationales Mapping Warum überhaupt relational? http://www.joinvision.com
  • 5.
    Objekt-Relationales Mapping Unterschiede Objektorientiert– Relational OO Konzepte  Vererbung  Polymorphie  Kapselung  Objektbeziehungen  Identität über Adressen  Programm. Integrität  keine Transaktionalität RDB Konzepte  keine Vererbung  keine Polymorphie  keine Kapselung  Relationen  Identität über Schlüssel  Referentielle Integrität  Transaktionalität ► www.e-movimento.com, Sebastian Dietrich5 Aber nicht nur die Konzepte unterscheiden sich…
  • 6.
    Unterschiede Objektorietiert –Relational Object-Relational Impedance Mismatch  Ein gutes Objektmodell…  Ist optimiert für (sich laufend ändernde) fachliche Anforderungen  Definiert Fachdaten (Businessobjekte) und deren Logik  Verwendet Fachtermini („ubiqutous language“)  Wird (meist) für jede Applikation neu & völlig anders definiert  Wird laufend refaktorisiert  …  Ein gutes Datenbankschema…  Vermeidet Redundanzen mittels Normalformen  Optimiert Leistung  Stellt Konsistenz und Integrität der Daten sicher  Ist (meist) applikationsübergreifend  … Object- Relational Impedance Mismatch ► www.e-movimento.com, Sebastian Dietrich6
  • 7.
    Object-Relational Impedance Mismatch Unterschiede Struktur: Objekt = Daten + Verhalten, Vererbung  Instanz: Objektzustand = Daten + Referenzen  an einem Objekt hängt potentiell die gesamte DB  Kapselung: Attribute können von außen nur über wohldefinierte Zugriffsmethoden verändert werden  Identität: Objektidentität von seinen Daten unabhängig  Daten reichen nicht um Identität in OO zu bestimmen  Arbeitsweise: OO = Netzwerk interagierender Objekte, Zugriff auf Objekte über Referenzen, keine Transaktionen, keine mengenbasierte Arbeitsweise  Verantwortlichkeit: Objektmodell in Verantwortlichkeit der Entwickler einer Applikation, unterliegt ständiger ungeplanter Änderung  Sprachwechsel: SQL vs. Java, Unterschiedliche Typsysteme, unterschiedliche Behandlung komplexer Typen, Wertobjekte ► www.e-movimento.com, Sebastian Dietrich7
  • 8.
    Object-Relational Impedance Mismatch Lösung Unterschiedliche Lösungsansätze:  Objektorientierte Datenbanken  Objektbasierte Datenbanken  Relationale Funktionen in Sprachen (Embedded SQL)  XML-DBs, Triplestores, …  NoSQL (Google BigTable, Amazon Dynamo, CouchDB, ...)  Objektrationale Mapper (O/R Mapper)  Ideale Lösung? Keine ideale Lösung möglich – nur Umgehungen des Problems. Wartbarkeit vs. Performance 30 - 40% der Entwicklungszeit geht in OR-IM [C. Keene 2004] ► www.e-movimento.com, Sebastian Dietrich8
  • 9.
    Object-Relational Impedance Mismatch Abbildungvon Vererbung OO  RDB  Abbildung von Vererbung = Ein Teilaspekt des ORIM  Nicht Trivial  Lösung: Objekt-Relational-Mapper (= OR- Mapper) Mitarbeiter Interner Externer <<abstract>> Person Person Mitarbeiter Interner Externer ? ► www.e-movimento.com, Sebastian Dietrich9
  • 10.
    Abbildung von VererbungOO  RDB Lösungswege  „Single Table“, „Table per class- hierarchy“, „Filter-Mapping“  1 Tabelle für alle Attribute der Basisklasse und davon abgeleiteten Klassen, dazu "Diskriminator" = Typ des Objektes  „Joined“, „Table per subclass“, „Vertikales Mapping“  1 Tabelle für Basisklasse angelegt und für jede davon abgeleitete Unterklasse, 1:1 Beziehungen dazwischen  „Table per concrete class“, „Horizontales Mapping“  1 Tabelle für konkrete Unterklassen inkl. Attribute abstrakter Basisklassen Person Attribute von Person, Mitarbeiter, Externer und Interner + Typkennzeichen Person Mitarbeiter Interner Externer Mitarbeiter inkl. Attr. von Person Interner inkl. Attr. von Person & Mitarbeiter Externer inkl. Attr. von Person & Mitarbeiter ► www.e-movimento.com, Sebastian Dietrich10
  • 11.
    Abbildung von VererbungOO  RDB Weitere Lösungswege  „General" = Generelle Tabellen  Eine Tabelle für Klassen  Eine für Beziehungen (inkl. Vererbung)  Eine für Attribute  Eine für Instanzen  Eine für Werte ► www.e-movimento.com, Sebastian Dietrich11
  • 12.
    Abbildung von VererbungOO  RDB Vor- und Nachteile  "Single Table"  DB Struktur typisch für RDBs  einfacher für DBAs - Verbraucht mehr Speicherplatz - Probleme mit "NOT NULL"  "Joined"  DB Struktur passt zur OO Struktur  einfachere Integration - Performance (joined Queries für Listen unterschiedlicher Typen)  "Table per Class" - Performance (mehrere Queries für Listen unterschiedlicher Typen) Person Attribute von Person, Mitarbeiter, Externer und Interner + Typkennzeichen Person Mitarbeiter Interner Externer Mitarbeiter inkl. Attr. von Person Interner inkl. Attr. von Person & Mitarbeiter Externer inkl. Attr. von Person & Mitarbeiter ► www.e-movimento.com, Sebastian Dietrich12
  • 13.
    Objekt-Relational Impedance Mismatch Faulheitsprinzip Das Rad nicht neu erfinden:  Mein Programm ist nicht das erste, das auf eine DB zugreift  30-40% des gesamten Codierungsaufwandes gehen in ORIM  Frameworks  Spring JDBC  iBATIS  JDO, JPA  Hibernate, EclipseLink, …  Ist eine Datenbank wirklich nötig? Alternativen:  RAM (BigMemory)  Archive, Bibliotheken, …  Konfigurationsdateien  Files, XML, Serialisierte Objekte, Preferences, …  OODBs, XML-DBs, Semantische DBs  Was sind Vorteile von DBs?  Schneller?  Skalierbarer?  Größer? ► www.e-movimento.com, Sebastian Dietrich13
  • 14.
    JDBC myBATIS DB EasyBeans, TopLink, OpenJPA, EclipseLink, Cayenne,Hibernate, DataNucleus JBoss, WebSphere, OC4J, Geronimo, Glassfish Persistenzlayer und OR Mapper in Java Architekturelle Positionierung JDBC Persistenz Layer OR Mapper DB JDO / JPA Container EJB App Server Spring-JDBC DbUtils, DBCP ► www.e-movimento.com, Sebastian Dietrich14
  • 15.
    ► www.e-movimento.com, SebastianDietrich15 Persistenzlayer und OR Mapper in Java Hibernate  Hibernate = OR Mapper von JBoss (RedHat)  Persistenzmechanismus von Jboss Application Server  Features:  Abfragen mittels SQL, HQL, Criteria API, Stored Procedures  POJOs ↔ Mapping / Annotations ↔ DB Tabellen  Transaktionen, Caches, Lazy Loading, Kaskadierungen, …  Weitere Features:  EntityManager – Verwendung von Hibernate via JPA  Shards – horizontal partitionierte DBs  Validator – Daten Integrität & Validierung  Tools – Eclipse & Roundtrip Engineering  Search – Volltextindices & -suche
  • 16.
    ► www.e-movimento.com, SebastianDietrich16 AppHibernate Persistenzlayer und OR Mapper in Java Hibernate Architektur  Transient Objects  Aktuell nicht an Session hängende persistente Objekte (POJOs)  Persistent Objects  An Session hängende Objekte mit persistentem Status (POJOs)  SessionFactory  Factory für Sessions  Precompiled Query Cache  Session  Kommunikation zwischen Anwendung und Datenbank  Kapselt JDBC-Verbindung  Cache von persistenten Objekten  Hat 1..N Transaktionen  Transaction  ACID Arbeitseinheit  JDBC, JTA, … Transaktionen Java JNDI JDBC JTA DB TransactionSession Session Factory Connection Provider TransactionFactory Persistent Objects Transient Objects
  • 17.
    ► www.e-movimento.com, SebastianDietrich17 Persistenzlayer und OR Mapper in Java Hibernate Beispiel  Tabelle KUNDE:  Java Klasse (POJO): public class Kunde { private int id; private String name; private String ort; private String strasse; private int plz; // no getter & setter }  Hibernate Configdatei für DB-, SQLDialekt-, Caching- … Config  Hibernate Mappingdatei: … <class name="Kunde" table="KUNDE"> <id name="id" column="ID"> <generator class="native"/> </id> <property name="name" /> … </class> …  Java Code: session.beginTransaction(); List kunden = session .createQuery("from KUNDE") .list(); session.getTransaction() .commit(); return kunden; Attribut Typ ID INTEGER NOT NULL PRIMARY KEY NAME VARCHAR(128) STRASSE VARCHAR(128) ORT VARCHAR(128) PLZ INTEGER
  • 18.
    ► www.e-movimento.com, SebastianDietrich18 Hibernate Beispiel Mapping von Vererbung mittels Annotations  Table per Subclass = „Joined“:  Hibernate Annotations: @Entity @Table(name=„PERSON“) @Inheritance(strategy=JOINED) public class Person { @ID @GeneratedValue @Column(name=„PERSON_ID“) private Long personId; … @Entity @Table(name=„MITARBEITER“) @PrimaryKeyJoinColumn (name=„PERSON_ID“) public class Mitarbeiter extends Person { … @Entity @Table(name=„INTERNER“) @PrimaryKeyJoinColumn (name=„PERSON_ID“) public class Interner extends Mitarbeiter { … Mitarbeiter Interner Externer <<abstract>> Person Person Mitarbeiter Interner Externer
  • 19.
    ► www.e-movimento.com, SebastianDietrich19 Vielen Dank für Ihre Aufmerksamkeit! Q&A[Sebastian Dietrich] Sebastian.Dietrich@e-movimento.com http://managing-java.blogspot.com

Hinweis der Redaktion

  • #2 © e-movimento
  • #4 © e-movimento Erklärungen der Indices: The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written. The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found under http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm.
  • #5 © e-movimento Erklärungen der Indices: Joinvision.com – Deutsches Onlineportal für die Vermittlung von IT Fachkräften und –Freelancer. Ca. 20.000 Jobangebote pro Jahr. Die Grafik veranschaulicht die historische Entwicklung der relativen Nachfrage nach Programmiersprachen in Jobangeboten bei www.joinvision.com
  • #7 © e-movimento Weitere Infos: OR-Mapper @ Wikipedia: http://de.wikipedia.org/wiki/Objektrelationale_Abbildung
  • #8 © e-movimento Weitere Infos: Object-Relational Impedance Mismatch @ Wikipedia: http://de.wikipedia.org/wiki/Object-relational_impedance_mismatch
  • #9 © e-movimento Weitere Infos: Object-Relational Impedance Mismatch @ Wikipedia: http://de.wikipedia.org/wiki/Object-relational_impedance_mismatch
  • #10 © e-movimento Weitere Infos: OR-Mapper @ Wikipedia: http://de.wikipedia.org/wiki/Objektrelationale_Abbildung
  • #11 © e-movimento
  • #12 © e-movimento
  • #13 © e-movimento
  • #14 © e-movimento Weitere Infos: Java OS-Persistenzframeworks: http://java-source.net/open-source/persistence OR-Mapper @ Wikipedia: http://de.wikipedia.org/wiki/Objektrelationale_Abbildung
  • #15 © e-movimento Weitere Infos: DataNukleus (früher &quot;Java Persistent Objects JPOX) Open Source (Apache License 2) ORM Framework, Implementiert den (alten) Java Data Objects (JDO) Standard und die Java Persistent API (JPA) V1 und demnächst auch 2 Apache Cayenne Open Source (Apache License 2) ORM Framework, Besonderheit ist der CayenneModeller (GUI Tool für DB Reverese Engineering, DB Generierung und Klassengenerierung) und die Möglichkeit über WebServices auf entfernte DBs zuzugreifen EasyBeans Open Source (GNU LGPL License) EJB Container EclipseLink OpenSource (Eclipse Public License) ORM Framework, Referenzimplementierung für JPA 2.0 TopLink Kommerzielles (Oracle) ORM Framework TopLink Essentials OpenSource Edition von TopLink, Referenzimplementierung von EJB 3.0 Hibernate Open Source (GNU LGPL) ORM Framework mit starker kommerzieller Unterstützung (JBoss / RedHat) Apache OpenEJB Open Source (Apache License 2.0) EJB Container – Basis fürJ2EE App Server Geronimo Apache OpenJPA Open Source (Apache License 2.0) JPA Implementierung – basierend auf Kodo (BEA JDO Implementierung)
  • #16 © e-movimento Weitere Infos: Hibernate @ Wikipedia: http://de.wikipedia.org/wiki/Hibernate_(Framework) Hibernate Homepage: https://www.hibernate.org/
  • #17 © e-movimento
  • #18 © e-movimento
  • #19 © e-movimento
  • #20 © e-movimento Weitere Kontaktmöglichkeiten: [email_address] Skype: sebastian_dietrich http://de.wikipedia.org/wiki/Benutzer:Sebastian.Dietrich