Für ein kleines privates Projekt wollte ich ein Eclipse-Plugin erstellen, welches via iBatis auf eine Derby Datenbank zugreift. Hierfür habe ich 3 Plugins erstellt:
- Data-Plugin (iBatis Konfiguration, Valueklassen und Daos)
- derbyWrapper
- ibatisWrapper
Laut iBatis-Dokumentation kann man durch folgenden Codeblock den SqlMapClient initialisieren.
-
String resource = “com/ibatis/example/sqlMap-config.xml”;
-
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
Allerdings funktioniert das aufgrund des ClassLoaders von Eclipse nicht. Man muss sich hierfür den Stream auf die Resource selbst erstellen und damit den SqlMapClient erstellen. (Die sqlMap.xml liegt im Source-Ordner im Package de.thirsch.sample)
-
String resource = "de/thirsch/sample/sqlMap.xml";
-
this.sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
Damit das Plugin ibatisWrapper auch die weiteren referenzierten SqlMaps findet, muss man im ibatisWrapper-Plugin in der Datei MANIFEST.MF den Eintrag Eclipse-BuddyPolicy auf dependent setzen.
-
Eclipse-BuddyPolicy: dependent
Ein weiterer Vorteil an dependent ist der Zugriff auf die vom Data-Plugin referenzierten Bibliotheken/Plugins. In diesem Falle das Plugin derbyWrapper. Denn eigentlich möchte ich meinem ibatisWrapper ohnehin nicht im Vorfeld sagen müssen, mit welcher Datenbank ich arbeite.
Vielen Dank an Martin für die Hilfe bei der Suche nach dieser Lösung.