02. maj 2002 - 10:46Der er
4 kommentarer og 1 løsning
JSP sider med Database adgang?
Hejsa.
Jeg har en masse JSP sider med session scope. Og alle JSP siderne har en UseBean til en JavaFacade.class.
Denne JavaFacade sørger for at behandle data. JavaFacaden laver en instans af min DBbroker.class, som laver database forbindelse og laver ændringer i databasen.
Hvis jeg har 10 clienter, går jeg udfra at hver klient har en instans af JavaFacaden og dermed også en instans af DBbrokeren. Er dette korrekt?
Det er jo ikke så smart at hver klient kan lave database-ændringer, uafhængig af hinanden!!
Skal jeg lave metoderne på DBbrokeren Synchronized??
Eller hvordan sikrer jeg mig at alle mine klienter ikke får adgang til databasen på samme tid, og dermed smadrer konsistensen i systemet?
Hvis javaFacaden som du skriver laver en instans af dbBrokeren, så har alle brugere deres egne objekter, og derfor også deres egen connection til databsen. Derfor er det ikke nødvendigt at Synchronize dem, men havde dbBroker været static så skulle de være synchronized.
F.eks. bruger jeg en DatabaseConnectionPool, som alle brugere af mit site har adgang til, da denne er Singleton klasse, er visse metoder synchronized.
Det er kun nødvendigt at synchronize hvis flere samtidigt kan bruge samme instans af en klasse, eller den kun findes i et eksemplar (static eller singleton)
Jeg tror det kommer en på hvad du skal med databasen.
Hvis du har en fancy database med transactioner og dets lign., kan jeg ikke se hvordan du vil gøre det med kun én forbindelse. Men hvis du selv mener du kan styre integriteten i databasen kan det performance mæssigt sikkert godt betale sig at kun have én forbindelse.
Den Database pool manager jeg har, kan man fortælle hvor mange connections den max må bruge. Skal det være rigtigt smart kan man også gøre så den f.eks. frigiver dem igen efter et hvist stykke tid, hvor de ikke er brugt. Ulempen ved at hver session har deres egen forbindelse er at det som tager længst tid når vi snakker om databaser er opbygning af en connection. Ved at bruge en pool genanvender man tidligere connections. Hvilket giver langt bedre performance.
runesoft: Du kan altid nøjes med en connection, den eneste grund til man skal have mere end 1 er pga. performance og delay time.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.