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 |
Past |
CW |
accomplished |
1 |
Umsetzung des Prototypen |
Prototypen finden Migrationsstrategie wählen und technisch umsetzen JDOQL zu JPQL Metadaten zu Annotations Mapping zu Annotations |
|
CW18 |
done in CW 21 |
2 |
Risikoabschätzung |
Risikoabschätzung schreiben |
|
CW19 |
done in CW24 |
3 |
Qualitätssicherung |
Ergebnisse aus Umsetzung des Prototypen niederschreiben |
|
CW22 |
done |
4 |
Probleme |
Probleme, welche auftreten könnten beschreiben |
|
CW24 |
done |
5 |
Fazit und Ausblick |
Fazit schreiben Ausblick schreiben |
|
CW25 |
done |
6 |
Konvertieren |
Das Googledocs Projekt nach Latex konvertieren |
|
CW27 |
done |
7 |
Abgabe |
Korrekturlesen Korrektur lesen lassen Präsentation anfangen |
|
CW31 |
done |
8 |
Puffer |
|
|
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
Week 12 KW 15
Activities
- Umsetzung Migration Prototyp fortgesetzt
Week 13 KW 16
Activities
Week 14 KW 17
Activities
- Umsetzung Migration Prototyp fortgesetzt
Week 15 KW 18
Activities
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