Moin,
ich habe da mal eine Frage bei der es primär um Threading bei Datenabfragen geht.
Ich habe eine mySQL Datenbank die via Hibernate abgefragt wird. Ich benutze in der untersten Ebene ein DAO welches die Grundlegenden Funktionen bereitstellt (SessionFactory, getSession() etc...).
Darauf setzt die CustomerImpl auf und stellt Methoden bereit die z.B. Kunden hinzuzufügen kann, Kunden löschen kann etc... Danach kommt eine Schicht (Service) die sich mit dem Verpacken in TableModel oder ComboBoxModel etc. beschäftigt. Die Gui greift auf die Service zu und holt sich die aktuellen TableModels und packt sie in die Gui Elemente.
Jetzt habe ich festgestellt das es bei größeren Datenmengen zu nervigen Verzögerungen auf der GUI kommen kann. Meine erste Idee war es die Update Methode in der View (Observer Pattern) mit einem SwingWorker zu versehen um dann alle Arbeiten in einem Thread zu erledigen. Das funktioniert auch soweit ganz gut.
Nun hatte ich die Idee das ganze Threading in einer etwas tieferen Ebene zu starten um nicht jedesmal an der Gui rumzupfuschen
. Wenn z.B. die View ausgetauscht werden soll muss ich das ganze Threading mit übernehmen was meiner Meinung nach nicht ideal ist (lasse mich da gerne korrigieren).
Nun meine Idee war es das Threading in der Ebene nach dem DAO anzusetzen.. Hier eine Methode aus der Klasse in der ich das Threading einfügen wollte.
Ich bin noch nicht so gut mit Threading vertraut aber ich habe mich gestern "etwas" eingelesen und bin auf ein paar Problemchen bzgl. der Rückgabe(Callabe) gestoßen...
Aber erst einmal die Frage ob meine Idee in der Methode das Threading zu erledigen überhaupt sinnvoll? Bzw. kann das überhaupt funktionieren und werden damit die "ruckler" in der Gui vermieden?
Vielen Dank,
goodcat
ich habe da mal eine Frage bei der es primär um Threading bei Datenabfragen geht.
Ich habe eine mySQL Datenbank die via Hibernate abgefragt wird. Ich benutze in der untersten Ebene ein DAO welches die Grundlegenden Funktionen bereitstellt (SessionFactory, getSession() etc...).
Darauf setzt die CustomerImpl auf und stellt Methoden bereit die z.B. Kunden hinzuzufügen kann, Kunden löschen kann etc... Danach kommt eine Schicht (Service) die sich mit dem Verpacken in TableModel oder ComboBoxModel etc. beschäftigt. Die Gui greift auf die Service zu und holt sich die aktuellen TableModels und packt sie in die Gui Elemente.
Jetzt habe ich festgestellt das es bei größeren Datenmengen zu nervigen Verzögerungen auf der GUI kommen kann. Meine erste Idee war es die Update Methode in der View (Observer Pattern) mit einem SwingWorker zu versehen um dann alle Arbeiten in einem Thread zu erledigen. Das funktioniert auch soweit ganz gut.
Nun hatte ich die Idee das ganze Threading in einer etwas tieferen Ebene zu starten um nicht jedesmal an der Gui rumzupfuschen
Nun meine Idee war es das Threading in der Ebene nach dem DAO anzusetzen.. Hier eine Methode aus der Klasse in der ich das Threading einfügen wollte.
Java:
@Override
public List<Device> getDeviceList(Customer customer) throws HibernateException {
try {
begin();
customer = (Customer) getSession().get(Customer.class, customer.getID());
commit();
return customer.getDevice();
}
catch(HibernateException e){
throw new HibernateException(e);
}
}
Ich bin noch nicht so gut mit Threading vertraut aber ich habe mich gestern "etwas" eingelesen und bin auf ein paar Problemchen bzgl. der Rückgabe(Callabe) gestoßen...
Aber erst einmal die Frage ob meine Idee in der Methode das Threading zu erledigen überhaupt sinnvoll? Bzw. kann das überhaupt funktionieren und werden damit die "ruckler" in der Gui vermieden?
Vielen Dank,
goodcat