Dataaccess och kundnytta
Jag startade ett projekt med att använda NHibernate för dataaccess direkt mot tabeller som mappade 1 till 1 mot mina domänobjekt. Det var tidigt i projektet och jag ville fort få fram någon form av riktig upplevelse för kunden, kunden höll i samma veva på att forma den organisation och rutiner som systemet skulle stödja så det var upplagt för många förändringar av datamodellen. En bit in i projektet togs det fram en ny datamodell för databasen av en databasexpert, den var naturligt nog ganska olik den jag startat med. Den modellen tog hänsyn till många aspekter som min saknade.
Jag blev i samma veva införstådd med att driftorganisationen inte accepterade att applikationer fick direktaccess till tabellerna utan endast via storedprocedures. Hmm, hur går det ihop med NHibernate? När jag fick klartecken från driften att min applikation skulle få hämta data vi vyer men sköta uppdateringarna via procedurer visade det sig att NHibernate hade ett ganska bra stöd för detta. Att hämta data via vyer gjorde det bättre eftersom jag nu enkelt kunde sätta ihop den nya databasmodellen med hjälp av vyer så att den stämde med min datamodell i applikationen. Uppdateringen var dock en annan visa, även om NHibernate stöder att varje klass har en insert, update och delete -procedur så blev det lite bök med det. Det funkar bra om man inte använder identity i databasen utan låtar NHibernate hantera idgenereringen. Så där fick jag göra en fix. Jag såg dock att stöd för Identity kommer med nästa version, förslaget ligger klart i 2.1 Alpha 1.
Allt detta bara för att komma fram till vad jag egentligen ville säga.
Det jag märkt är att dataaccess tar ganska mycket mer tid i anspråk nu när vyer och procedurer måste skapas och underhållas så fort databasmodellen ändras. Jag har inte sett detta så tydligt förut eftersom man sällan har möjlighet att få en så här jämförelse. Om vi bara hade haft mätvärden på farten i projektet. Då hade man kunnat se hur stor skillnaden är, i siffror.
Jag är dock glad att jag skrivit integrationstester för att testa all dataaccess mot känt testdata, annars vet jag inte hur lång tid det tagit att fixa till vyer och procedurer efter databasförändringarna.
Postad av Håkan Alexander
Kommentarer (2)
Kategorier:
NHibernate