6. Objekter -> databaser Problemområdet: Hvordan håndtere koblingen mellom objekter og database Database Lagring Forhold gjennom fremmednøkler Objekter Interaksjon Forhold gjennom referanser Arv, polymorfismse 3
7. Alternativer Manuell SQL Stored procedures/Views Dataset (Table data gateway) Active Record OR-mapper, egenutviklet OR-mapper, kommersiell/open source Kodegenerering 4
8. Persistance Ignorance Graden av kobling mellom databasen og objektene Arve fra spesifikk baseklasse Instansiere via bestemt factory Bruke spesielle datatyper Implementere interface Ha spesifikke konstruktører Ha spesifikke felt Access modifiers Annet 5
68. OR-mapper Automatisk mapping mellom database og objekter Bruker mapping-filer eller attributter Persistence Ignorance (PI) 14
69. OR-mapper Fordeler Modellert domene godt – domain-centric Dynamisk SQL-generering Støtte for multiple-databaser Støtte for stored procedures og manuell sql Rask utviklingstid når det er oppe, lett å forandre Ulemper Kompleksitet Ytelse 15
105. Kodegenerering Generere data access og domeneobjekter fra databasen Kjenner det ikke godt nok Fordeler Nært til databasen Avansert generering Ulemper Data-centric Mange av de samme som OR-mapper ifh. til kompleksitet/ytelse osv. 21
107. NHibernate Mest kjente og voksne Port fra Hibernate, levd i Java-verden i en evighet Stor brukerskare Domain-centric Mye funksjonalitet Mappingfiler Arv Eget query språk Støtte for Stored procedures 1-1, 1-*, *-* Caching Støtter flere databaser LINQ Persistance Ignorance (PI) ER OR-mapperen i .NET verden per nå 23
108. Entity Framework MSDN: ”designed to provide strongly typed LINQ access for applications requring a more flexible object-relational mapping, across Micorsoft SQL Server and third-party databases” Enterprise løsning Flere lag med metadata – Conceptual, Storage, Mapping Skal være mer enn en OR-mapper MEN Veldig dårlig i forhold til Persistence Ignorance Ikke veldig modent (v1) 24
109. LINQ to SQL Rapid Application Development løsning Støtter kun direkte mapping mot databasen. 1:1 MSDN: ”designed to provide strongly typed LINQ access for rapidly developed applications across the Mircrosoft SQL Server family of databases.” Kun Table per Hierarchy arv Kun attributt-mapping ved bruk av Visual Studio 08 designer Kun SQL Server 25
110. Castle Active Record Fordeler Veldig enkelt å komme i gang med Laget over NHibernate Må ikke spesifisere kolonnenavn Ulemper Standard problemer rundt PI for AR Vanlig å arve fra baseklasse Data-centric 1:1 26
113. Konklusjon Ingen løsning passer alle scenarioer! Velg ut i fra Hva du skal utvikle Hvordan du liker å utvikle Hva du kan Hva de andre utviklerne kan! 29