Hallo!
Also, ich werde mal die Überschrift etwas präzisieren: Ich entwickle derzeit eine Web-Applikation basieren auf dem MVC-Prinzip (in Struts). Grob gesagt handelt es sich um eine Applikation, welche Aufträge und deren Auftragsgegenstände, Kunden, Mails, etc. verwaltet.
Momentan wird die ganze Speicherung der Aufträge mittels einer Oracle-DB realisiert. Dazu habe ich verschiedene Manager-Klassen implementiert, welche für die Speicherung der einzelnen Daten verantwortlich sind - so gibt es beispielsweise eine Klasse "OrderManager" welche Methoden zur Manipulation von Aufträgen (engl. order ) bereitstellt (Auftrag bearbeiten, erstellen, löschen, suchen in Aufträgen, ...). Des weiteren gibt es noch Manager zur Manipulation von Auftragsgegenständen, Kunden etc. pp.
Meine Frage ist nun, wie würdet ihr das realiseren, dass ich sozusagen mehrere Datenquellen zur Verfügung stellen kann? Beispielsweise eine Datenquelle welche die Daten in einer Oracle-DB speichert, eine Datenquelle welche die Daten in einer MySQL-DB speichert (welche beispielsweise eine andere Tabellenstruktur besitzt).
Ich habe da an ein Interface "Model" gedacht, welches die verschiedenen Methoden implementiert...
des weiteren gibt es eine Factory, welche die gewünschte Datenquelle bereitstellt
wenn ich das ganze so lösen würde, dann würde das Interface "Model" ziemlich viele Methoden definieren...
wie würdet ihr das lösen?
Also, ich werde mal die Überschrift etwas präzisieren: Ich entwickle derzeit eine Web-Applikation basieren auf dem MVC-Prinzip (in Struts). Grob gesagt handelt es sich um eine Applikation, welche Aufträge und deren Auftragsgegenstände, Kunden, Mails, etc. verwaltet.
Momentan wird die ganze Speicherung der Aufträge mittels einer Oracle-DB realisiert. Dazu habe ich verschiedene Manager-Klassen implementiert, welche für die Speicherung der einzelnen Daten verantwortlich sind - so gibt es beispielsweise eine Klasse "OrderManager" welche Methoden zur Manipulation von Aufträgen (engl. order ) bereitstellt (Auftrag bearbeiten, erstellen, löschen, suchen in Aufträgen, ...). Des weiteren gibt es noch Manager zur Manipulation von Auftragsgegenständen, Kunden etc. pp.
Meine Frage ist nun, wie würdet ihr das realiseren, dass ich sozusagen mehrere Datenquellen zur Verfügung stellen kann? Beispielsweise eine Datenquelle welche die Daten in einer Oracle-DB speichert, eine Datenquelle welche die Daten in einer MySQL-DB speichert (welche beispielsweise eine andere Tabellenstruktur besitzt).
Ich habe da an ein Interface "Model" gedacht, welches die verschiedenen Methoden implementiert...
Code:
public interface Model {
public Order getOrder(String order_number);
...
public Customer getCustomer(String customer_id);
...
public OrderItem[] getOrderItem(String order_number);
...
}
des weiteren gibt es eine Factory, welche die gewünschte Datenquelle bereitstellt
Code:
public class ModelFactory {
public final static String ORACLE_MODEL = "oracle_source";
public final static String MYSQL_MODEL = "mysql_source";
public static Model getModel( String data_source )
throws ModelNotFoundException {
if (ORACLE_MODEL.equals(data_source)) {
return new OracleModel();
}
if (MYSQL_MODEL.equals(data_source)) {
return new MySQLModel();
}
throw new ModelNotFoundException("model ["+data_source+"] not found!");
}
}
wenn ich das ganze so lösen würde, dann würde das Interface "Model" ziemlich viele Methoden definieren...
wie würdet ihr das lösen?