You are here: SE » ThesesHome » ThesisMigrationJDOtoJPA

Migration von JDO zu JPA - Planung, Entwicklung, Durchführung

Expose

Die Firma tolina GmbH verwendet momentan JDO(Java Data Objects) als Spezifikation und KODO als Implementation der Spezifikation zur persistenten Speicherung von Daten. Einerseits ist das Erwerben neuer Entwicklerlizenzen nicht mehr möglich und andererseits ist diese Spezifikation veraltet und wurde mittlerweile durch einen neuen Standard ersetzt. Dieser ist JPA(Java Persistence API). Der Inhalt dieser Arbeit ist es eine Migrationsstrategie zu entwickeln.

In dem Rahmen werden die beiden Spezifikationen erläutert und es wird beschrieben worin sie sich grundlegend unterscheiden. Dadurch wird ermittelt welche Funktionalitäten von JDO nach JPA migriert werden müssen. Zusätzlich erfolgt eine Evaluierung der verschiedenen Provider von JPA anhand vorher bestimmter Kriterien ( z.B Aktivität), damit der Passende gewählt werden kann. Weiterhin werden einige Migrationsstrategien vorgestellt und ihre Vor- und Nachteile niedergeschrieben. Durch Wichtungen der Vor- und Nachteile wird sich letztendlich für eine Migrationsstrategie entschieden werden.

Die gewählte Migrationsstrategie (höchstwahrscheinlich eine Hybride Variante, da dies von der Firma präferiert wird) wird anschließend mit Hilfe eines vorher gewählten Prototypen durchgeführt. Bei der Migration dieses Prototypen werden die Zeiten für die einzelnen zu wiederholenden Migrationsschritte notiert, sodass am Ende eine Risikoabschätzung entwickelt werden kann. Diese sagt anhand vorher abgesprochener Kriterien aus, welche Teile überhaupt migriert werden müssen und wie viel Arbeitsaufwand die Migration umfasst. Dabei auftretende Probleme, welche für die Migration gelöst werden müssen, werden sofort gelöst. Weitere Probleme, welche aber nicht die Migration behindern, werden in einem späteren Kapitel behandelt und eventuell Lösungsansätze vorgestellt.

Während der Migration werden ständig JUnit Tests ausgeführt, dadurch kann im Nachhinein eine Bewertung stattfinden, wie hilfreich eine gute Testabdeckung für eine Migration sein kann.

Mit Hilfe der gesammelten Informationen und Erkenntnissen sollte es für jeden möglich sein eine Migration von JDO nach JPA durchführen zu können. Unabhängig vom JDO- und JPA-Provider.

interessante Forschungsaspekte

  • können JDO und JPA gemeinsam laufen?
  • wie sieht es mit Queries aus?
  • wenn ja, wie funktioniert das dann? (Zum Beispiel Zugriff von JDO Objekten auf JPA Objekte)
  • ist Caching ein Problem, wenn beide auf das gleiche Datenbankobjekt zugreifen?
  • Aufwand und Risiko einer Migration
  • hilft eine gute Testabdeckung bei Migrationen?

Arbeitsschritte

  • Beschreiben warum migriert werden soll
  • JDO und JPA beschreiben
  • Beschreiben was migriert werden muss
  • Migrationsstrategien beschreiben und eine wählen
  • Migration an einem Prototypen zeigen
  • Risikoabschätzung erstellen
  • Probleme erläutern
  • Qualität und Tests
  • Fazit, Ausblick

Milestone no. Milestone Goals target Past CW accomplished wrench
1 Umsetzung des Prototypen Prototypen finden
Migrationsstrategie wählen und technisch umsetzen
JDOQL zu JPQL
Metadaten zu Annotations
Mapping zu Annotations
Done CW18 done in CW 21
2 Risikoabschätzung Risikoabschätzung schreiben Done CW19 done in CW24
3 Qualitätssicherung Ergebnisse aus Umsetzung des Prototypen niederschreiben Done CW22 done
4 Probleme Probleme, welche auftreten könnten beschreiben Done CW24 done
5 Fazit und Ausblick Fazit schreiben
Ausblick schreiben
Done CW25 done
6 Konvertieren Das Googledocs Projekt nach Latex konvertieren Done CW27 done
7 Abgabe Korrekturlesen
Korrektur lesen lassen
Präsentation anfangen
Done CW31 done
8 Puffer   NEW CW35  

Weekly Status

Week 1 KW 4

Activities

  • JDO Mapping niedergeschrieben
  • JDO Metadadten niedergeschrieben
  • JDOQL niedergeschrieben (JDO Query)

Week 2 KW 5

Activities

  • Definition Komponentenentwicklung
  • Architektur bei tolina
  • Migrationsstrategien in der Theorie niedergeschrieben

Week 3 KW 6

Activities

  • Testproject aufgesetzt um Hibernate, OpenJPA und EclipseLink zu testen
  • Evaluierung der drei Provider geschrieben ( Geschichte, Community, AKtivität, Testprojekt)
  • Evaluierung der Provider zur Integration von Kodo spezifischen JDO Features angefangen

Week 4 KW 7

Activities

  • Evaluierung der Provider zur Integration von Kodo spezifischen JDO Features abgeschlossen, für Hibernate entschieden
  • Abschnitt zur Wahl des Prototypen geschrieben
  • Umstellung für JPA angefangen, Hybridlösung versuchen umzusetzen, Architektur entwickeln, welche mit JDO und JPA umgeht und dynamisch entscheidet, was zu tun ist

Week 5 KW 8

Activities

  • Zentrale Klasse erstellt welche den Zugriff an JPA oder JDO delegiert
  • Klasse erstellt welche über JPA mit der Datenbank kommunizieren soll und eine Methode (persist) hinzugefügt
  • Test erstellt welcher überprüft ob die Funktionalität der zentralen Klasse funktioniert wie geplant, das heißt auf der Klasse werden jeweils ein JDO und ein JPA Objekt versucht zu persistieren.
  • Alles in dem Kapitel Umsetzung Hybridlösung niedergeschreiben
  • Probleme Kapitel erstellt und aufgefallene Probleme als Überschriften notiert, sodass diese später ausführlicher beschrieben werden können

Week 6 KW 9

Activities

  • Umsetzung Prototypen begonnen → Erste JUnit Tests gefailed → Zum Fixen wird Query benötigt
  • Kapitel über JDOQL zu JPQL angefangen

Week 7 KW 10

Activities

  • Umsetzung Query angefangen
  • Kapitel über Hybridlösung von JDOQL und JPQL angefangen

Week 8 KW 11

Activities

  • Umsetzung Query fortgesetzt
  • Kapitel über Hybridlösung von JDOQL und JPQL fortgesetzt

Week 9 KW 12

Activities

  • Einige Definitionen geschrieben
  • Expose erstellt

Week 10 KW 13

Activities

  • Umsetzung Migration Prototyp fortgesetzt

Week 11 KW 14

Activities

  • krank

Week 12 KW 15

Activities

  • Umsetzung Migration Prototyp fortgesetzt

Week 13 KW 16

Activities

  • Urlaub

Week 14 KW 17

Activities

  • Umsetzung Migration Prototyp fortgesetzt

Week 15 KW 18

Activities

  • Urlaub

Week 16 KW 19

Activities

  • Umsetzung Migration Prototyp abgeschlossen
  • ICEM Jahre 2012,2011,2010 und 2009 nach Artikeln zum Thema Migration und Automatisierung gesucht

Week 17 KW 20

Activities

  • Migration kodo.properties zu persistence.xml geschrieben
  • Migration JDO Metadaten zu JPA Annotationen geschrieben

Week 18 KW 21

Activities

  • Kapitel Migration kodo.properties zu persistence.xml abgeschlossen
  • Kapitel Migration JDO Metadaten zu JPA Annotationen abgeschlossen
  • Kapitel Migration JDO Mapping zu JPA Annotationen abgeschlossen
  • Erkenntnisse aus dem Prototypen angefangen

Week 19 KW 22

Activities

  • Kapitel Erkenntnisse aus dem Prototypen abgeschlossen
  • Kapitel Risikoabschätzung angefangen
  • Kapitel Probleme angefangen

Week 20 KW 23

Activities

  • Kapitel Risikoabschätzung weitergemacht
  • Migration am 2. Prototyp zur Evaluierung der Hochschätzung angefangen

Week 21 KW 24

Activities

  • Kapitel Risikoabschätzung abgeschlossen
  • Migration am 2. Prototyp zur Evaluierung der Hochschätzung abgeschlossen

Week 22 KW 25

Activities

  • simpleMatch Extension angefangen
  • Automatisierung angefangen

Week 23 KW 26

Activities

  • simpleMatch Extension abgeschlossen
  • Qualitätssicherung angefangen

Comments