# DAO Pattern



## Guest (3. Mai 2008)

Moin,

ich benutze das DAO Pattern. Ich habe mir dazu eineml dieses Klassendiagramm angeschaut, in dem eine Klasse ResultSet existiert. 

http://www.corej2eepatterns.com/Patterns2ndEd/DataAccessObject.htm

Muss das bei genauer Umsetzung des patterns so sein ? Oder kann der Resultset nicht einfach in einer Funktion im DAO gehandelt werden ?


Vielen Dank


----------



## foobar (3. Mai 2008)

Damit ist das java.sql.ResultSet gemeint. Das DAO kapselt einfach nur den dbspezifischen Code einer Entität. Wie du das genau implementierst ist nicht festgelegt und kann auch von Projekt zu Projekt variieren. Bei mir erben alle DAOs von einem AbstractDao, der die COnnection und ein paar Hilfsmethoden zur Verfügung stellt. Alle DAOs werden über eine Factory erzeugt und lazy initialisiert.


----------



## L-ectron-X (3. Mai 2008)

Jetzt muss ich mal fragen: Was bedeutet "lazy initialisieren"?
Und welche Hilfsmethoden hast du im AbstractDAO?


----------



## foobar (3. Mai 2008)

L-ectron-X hat gesagt.:
			
		

> Jetzt muss ich mal fragen: Was bedeutet "lazy initialisieren"?


Das bedeutet, daß das DAO nur beim ersten Aufruf initialisiert wird genauso wie bei einem Singleton.



			
				L-ectron-X hat gesagt.:
			
		

> Und welche Hilfsmethoden hast du im AbstractDAO?


Ich benutze den JDBC-Wrapper aus dem Springframework und im AbstractDAO habe ich Zugriffsmethoden auf die Templateklassen ausserdem noch ein paar Utilitymethoden wie existsTable. Über die AbstractDAO bekommen die DAOs auch Zugriff auf die DAOFactory.
Jedes DAO z.b. UserDAO ist eine abstrakte Klasse, die alle RowMapper und alles was gebruacht wird um aus den relationalen Daten der DB Objekte zu erzeugen enthält. Im UserDAO sind dann auch die Methoden die bei allen unterstützen DBs identisch sind z.b. deleteUser oder addUser. Die dbspezifischen Methoden kommen dann in konkreten Unterklassen in meinem Fall InformixUserDAO und MysqlUserDAO.


----------



## Gast (5. Mai 2008)

Sehr schön, vielen Dank dafür


----------

