Ist es in Ordnung, Singleton-DAO-Objekte zu haben?

8

Betrachten Sie die Struktur der folgenden Klassen:

  1. BaseDAO mit Methoden, um PreparedStatement zu markieren und eine Verbindung vom Pool
  2. zu erhalten
  3. AccountDAO extends BaseDAO , um mit Account table über JDBC zu arbeiten. Diese Klasse ist Singleton
  4. AccountService hitch ruft Methoden von AccountDAO so auf: %Code%

AccountDAO.getInstance().login(name, password). ist eine Spring-Bean mit AccountDAO -Anmerkungen für Methoden, die Daten einfügen.

Ist das in Ordnung? Ich denke Singleton DAO-Klassen können zu Leistungsproblemen führen. Könnte es besser sein, einige Frühlingsspritzen in Service-Schicht-Klassen zu verwenden? (Ich bin neu in Spring, also wird jeder Rat geschätzt)

    
Ada 14.10.2010, 21:02
quelle

2 Antworten

15

Der empfohlene Ansatz in der Spring-Dokumentation besteht darin, Ihre DAOs als normale Klassen zu schreiben und den Singleton-Bereich zu verwenden. Dies funktioniert gut, wenn Ihre DAOs keinen Status beibehalten.

Ссылка

Abschnitt 3.4.2.

Wenn Sie Spring verwenden, sollten Sie nicht mit vorbereiteten Anweisungen und so weiter beschäftigt sein, es sei denn, Sie machen etwas Wackeliges. Sehen Sie sich JdbcTemplate oder HibnerateTemplate an. Ja, Sie sollten Spring verbinden, um Ihre DAOs in Ihre Dienste zu integrieren oder wo immer Sie sie brauchen.

    
hvgotcodes 14.10.2010 21:05
quelle
0

Ich bin mit Spring nicht so vertraut, aber im Allgemeinen möchten Sie nicht, dass die Verbindungen zu Ihren Datenquellen aus mehreren Threads aufgerufen werden. Es ist wahrscheinlich O.K. Wenn Sie es so konfigurieren, dass die DAO-Objekte Pseudo-Singletons in einem Threadkontext sind, aber nicht über Threads gemeinsam genutzt werden. Die meisten IoC-Container ermöglichen dies über die Konfiguration.

Natürlich bringt dies andere Überlegungen zur Datenkonsistenz ins Spiel und Sie müssen diese sorgfältig verwalten. Im Allgemeinen wird Ihnen der ORM-Teil dabei helfen.

    
ale 14.10.2010 21:10
quelle

Tags und Links