# Unterschied zwischen DAO und DTO - Beispiel?



## Rumborak (15. Apr 2007)

Hallo Forum!

Entschuldigt bitte meine vielleicht etwas blöde Frage: Was ist eigentlich jetzt der Unterschied zwischen einem Data Access Object und einem Data Transfer Object? Könnte mir dazu bitte jemand ein simples Code-Beispiel geben - wäre echt nett 

Hab schon bei Google gesucht (j2ee unterschied zwischen dao und dto) - ergibt 12 Treffer, die mir aber nicht so recht weiter geholfen haben....

In den Büchern, wo ich nachgeschlagen habe, wird jeweils nur das DAO-Pattern erklärt.

Danke schonmal!


----------



## Guest (15. Apr 2007)

Wie die Namen schon sagen 

"Data Access Object" = Datenzugriffsobjekt
"Data Transfer Object" = Datenübertragungsobjekt

Übersetzung ist zwar gaga und nicht sinnvoll, aber damit ist es erklärt.
DAOs sind Klassen zum Zugriff auf Daten und DTOs sind die Daten selbst.

z.B.
	
	
	
	





```
public interface IPersonDAO extends IGenericDAO
{
   PersonDTO getPerson(Long personId) throws DAOException;
   List<PersonDTO> getPersonList() throws DAOException;
   ...
}
```


----------



## Rumborak (16. Apr 2007)

Jo, danke mal!

So eine ähnliche Definition hatte ich auch schonmal irgendwo gelesen. Mir ist nur noch nicht ganz klar, wie die beiden zusammen spielen. Wenn ich also z. B. eine DB habe, wo Kunden drin sind. Ein Kunde meldet sich ans System an und gibt sein Login nebst Passwort ein....

Also eine Klasse für den Kunden:


```
public class Kunde
{
	private String login;
	private String pass;

	public String getLogin()
	{
		return login;
	}

	public void setLogin( String login )
	{
		this.login = login;
	}

	public String getPass()
	{
		return pass;
	}

	public void setPass( String pass )
	{
		this.pass = pass;
	}

	...Name, Strasse, usw.
}
```

Wo kommt jetzt das DAO ins Spiel und wie arbeitet das mit einem DTO zusammen, um die Daten vom GUI in die Datenbank und umgekehrt zu transferieren?

Wie würde das Design-Pattern mäßig so richtig gut aussehen?


----------



## Rumborak (18. Apr 2007)

Könnte mir da vielleicht jemand mit einem ganz einfachen Beispiel weiter helfen? Wo stehen denn jetzt die SQL-Kommandos, wie wird das Kunden-Objekt befüllt und wie funktioniert der Datenfluß insgesamt? Also von der GUI zur Datenbank und umgekehrt - evtl. gibts da ja irgendwo eine gute Seite im Netz. Ich bin nur bisher noch nicht fündig geworden......


----------



## Gast (18. Apr 2007)

Hier kannst du mehr erfahren über DAOs/DTOs (mit Beispielen)
http://www.torsten-horn.de/techdocs/java-hibernate.htm


----------



## Gast (18. Apr 2007)

deine klasse kunde ist deine DTO
wenn du eine kunde hast (d.h du weisst seine pass und login)
du willst prüffen ob er in deine DB enthalten ist 
also du brauchst eine methode di in db rein guckt und zb eine boolean wert zurück gibt 
dafür schreibst du eine klasse  die diese methode enthält di verbindung zum datenbak aufbaut und denn vergleich durchführt
diese klasse ist deine  DAO
beipiel code
public


----------



## Gast (18. Apr 2007)

public class KundeDAO{
public  boolean istDrin(Kunde k){
/*hier kommen die attributte um deine statment (zb mysqlabfrage an die daten bank angenommen man hat einen )*/
if (k.login ==fromdb.login && k.pass==fromdb.pass)return true 
else return false
*/
diese  ist ein beispiel was nur eine methode enthält aber im wirklichkeit kapselst du da mehr methoden nach deiner bedarf
was augeklammert ist da müssen zeilen programmiert was dir 
1.die verbindung zur datenbank macht 
2.deine sql statment formulierung



}


----------



## Rumborak (19. Apr 2007)

OK danke, ich schau's mir mal an...


----------

