Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13138
| From | Patrick Roemer <sangamon@netcologne.de> |
|---|---|
| Newsgroups | de.comp.lang.java |
| Subject | Re: Thread-safe singleton |
| Date | 2017-09-11 18:14 +0200 |
| Organization | news.netcologne.de |
| Message-ID | <op6cpl$k9g$1@newsreader4.netcologne.de> (permalink) |
| References | <f1am3bF8aciU1@mid.individual.net> <oopk7s$3ch$1@Gaia.teknon.de> <oopp79$o7o$1@newsreader4.netcologne.de> <f1luviFpup0U1@mid.individual.net> |
Responding to Christian H. Kuhn:
> Es gibt eine Klasse, die die eigentliche Datenbank repräsentiert, eine,
> die weiß, in welchem Format die Daten aus dem Internet ankommen, und
> eine, die das Format kennt, in dem die Daten aus der Datenbank
> geschrieben werden sollen. Dazu eine main-Methode; ob die in einer
> eigenen Klasse ist oder an eine der anderen Klassen angehängt wird, ist
> vermutlich unerheblich. Aber es ist eine Aufgabe, die nicht speziell an
> eine der anderen Klassen gekoppelt ist, also bekommt sie erstmal ihre
> eigene Klasse.
>
> main() erzeugt (inzwischen) ein Objekt der Datenbankklasse. main() liest
> die Zugangsdaten aus einer ini4j-Datei und übergibt sie im Konstruktor.
> Die Importer- und Exporter-Klassen brauchen nach aktuellem Stand der
> Dinge kein Objekt; es reicht aus, wenn die import- bzw. export-Methode
> statisch ist. main() übergibt das Datenbankobjekt, damit die beiden
> anderen wissen, an wen sie ihre geparsten Daten zu übergeben haben.
Es gibt in Java keine Sonderpunkte, wenn man möglichst viel statisch
macht. Eher im Gegenteil...
> Die Idee war, dass das Datenbankobjekt genau einmal eine Connection
> herstellt. Weitere Methoden erzeugen das gerade passende
> (Prepared)Statement. Der Importer führt verschiedene for-each-Schleifen
> aus, in der jeweils eine Zeile des Input-Files geparst wird und die
> passende Methode mit dem Datensatz als Argument ausgeführt wird. Der
> Exporter holt Datensatz für Datensatz ab, solange noch Daten existieren.
> Am Ende von main() wird dann ein close() aufgerufen, das
> Connection.close() ausführt. Es geht um je eine halbe Million
> Datensätze, da wäre der Aufwand, für jeden Datensatz eine neue
> Connection und ein neues Statement zu erstellen und wieder zu schließen,
> ETWAS groß.
DataSource dataSource = createDataSource();
try(DB db = new DB(dataSource)) {
new Importer(db).importData(sourceDir());
new Exporter(db).exportData(targetDir());
}
catch(SQLException exc) {
// ...
}
...?
Viele Grüße,
Patrick
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Thread-safe singleton "Christian H. Kuhn" <qno-news@qno.de> - 2017-09-06 18:29 +0200
Re: Thread-safe singleton Patrick Roemer <sangamon@netcologne.de> - 2017-09-06 21:06 +0200
Re: Thread-safe singleton v_borchert@despammed.com (Volker Borchert) - 2017-09-06 20:02 +0000
Re: Thread-safe singleton Patrick Roemer <sangamon@netcologne.de> - 2017-09-06 23:27 +0200
Re: Thread-safe singleton v_borchert@despammed.com (Volker Borchert) - 2017-09-07 16:45 +0000
Re: Thread-safe singleton "Christian H. Kuhn" <qno-news@qno.de> - 2017-09-11 01:08 +0200
Re: Thread-safe singleton Patrick Roemer <sangamon@netcologne.de> - 2017-09-11 18:14 +0200
Re: Thread-safe singleton Marcel Mueller <news.5.maazl@spamgourmet.org> - 2017-09-06 23:26 +0200
Re: Thread-safe singleton Claus Reibenstein <4spamersonly@kabelmail.de> - 2017-09-10 13:52 +0200
csiph-web