Das DAO Pattern

Transcrição

Das DAO Pattern
Das Data Access Object
Pattern
DAO
DAO Pattern wozu?
• Kapselung des Daten-Zugriffs
• Flexibler Austausch der Datenhaltung
(File-System, DB, Web-Service, …)
• Konkret für EQualS Projekt
die SQL-Statements sind sauber getrennt von der
Datenschicht (Model / Business).
Beispiel: Notentabelle
Die Bewertungen von Studentin „Heidi Muster“
Klassendiagramm
Auszug
DAOFactory
Verwalten der Connection
public class DAOFactory {
private static final String DRIVER_CLASS = " ... ";
private static final String CONNECTION_URL = " ... ";
private static DAOFactory instance;
private Connection connection;
// statischer Zugriff auf die Instanz
public static DAOFactory getInstance() {
if (instance == null)
instance = new DAOFactory ();
return instance;
}
DAO Factory
//Singleton
private DAOFactory() {
if (connection == null) {
try {
Class.forName(DRIVER_CLASS).newInstance;
connection =
DriverManager.getConnection(CONNECTION_URL);
} catch (Exception e) { . . . }
}
}
public RatingDAO createRatingDAO() {
return new RatingDAO(connection);
}
. . .
RatingDAO
public class RatingDAO {
private Connection connection;
public RatingDAO(Connection c) {
this.connection = c;
}
public Rating getRating(int studentId, int courseId) throws ...
{
String selectQuery = "SELECT * FROM Rating WHERE …
";
PreparedStatement selectStm =
connection.prepareStatement(selectQuery);
selectStm.setInt(1, studentId);
selectStm.setInt(2, courseId);
ResultSet rs = selectStm.executeQuery();
. . .
}
. . .
Vereinfachtes Sequenzdiagramm