Data-Access Layer erstellen mit Codus
Codus ist ein Tool, das basierend auf einer bestehenden Datenbank eine komplette Datenzugriffs-Schicht (Data-Access Layer) erstellt. Diese verfügt über Entities, Data-Access Objects und NUnit Tests.
Das Tool kann hier heruntergeladen werden. Neben zwei älteren kostenlosen Versionen kann die aktuelle Version als 10-Tage-Test-Version heruntergeladen werden. Die 10-Tage-Test-Version ist empfehlenswert, da hier .NET 2.0-Code erstellt wird. In der kostenfreien Version wird zu jedem Entitytyp eine typisierte Collection generiert. Das ist unter 2.0 – dank Generics – nicht mehr notwendig.
Im Programm hat man die Möglichkeit, sich mit einer Datenbank zu verbinden. Unterstützt werden Access, MySQL, MSSQL und Oracle Datenbanken. Aus der Datenbank wählt man dann die entsprechenden Tabellen aus, für die die Zugriffsschicht erstellt werden soll. Es lassen sich auch einzelne Spalten ausschließen.
Die Erstellung der Datenzugriffs-Schicht erfolgt mit Hilfe von Templates. Zurzeit kann zwischen dem DAO Framework Template und dem NHibernate Framework Template gewählt. Die Ausgabe erfolgt jeweils in C#.
Manuell erstellte Hibernate-Mappings bieten dennoch einen reichhaltigeren Funktionsumfang und eine feinere Abstimmung vom Klassen- zum Relationenmodell. So unterstützt Hibernate verschiedene Kopiersemantiken für Collections (insb. Kompositionen), die Codus von Haus aus nicht ausschöpft. Many-to-many-Relationships oder schwache Entitäten werden ebenfalls nicht berücksichtigt. Stattdessen erhält man generierte Klassen für die 3 an der Beziehung beteiligten Relationen. Dadurch verlagern sich allerdings einige der Tätigkeiten, für die Hibernate geeignet (zuständig?) ist, in die oberen Schichten. Ich möchte nicht ausschließen, dass die aktuelle Codus-Version hier mehr leistet – die Testversion bot hier auf den ersten Blick jedenfalls keine Unterstützung.
Bleibt unterm Strich dennoch, dass Codus eine Menge Arbeit sparen kann, sofern einfache Relationenmodelle eingesetzt werden.
Tags:.NET, C, DAO, MSSQL, MySQL, NHibernate, NUnit, SQL

