2009-08-14 15 views
1

in meinem Dao, in jeder Methode, wenn ich jdbctemplate aufrufen, sollte ich mit neuen jdbctemplate() aufrufen. Recht? oder einen statischen Augenblick von jdbctemplate erhalten und wiederverwenden? Wie wäre es mit jpatemplate?jdbctemplate, jpatemplate

Antwort

1

in meinem Dao, in jeder Methode, wenn ich jdbctemplate aufrufen, sollte ich mit neuen jdbctemplate() aufrufen. Recht?

Nein, Sie nicht. Die JdbcTemplace sollte in Ihrem DAO durch Konfiguration injiziert werden. Dito für JpaTemplate.

+0

@ downvoter: bitte erklären Sie Ihren Downvote – dfa

1

JdbcTemplate ist THREAD so ist es absolut sicher ist eine Instanz davon in Ihrer gesamten Anwendung zu teilen (obwohl nur die Datasource-Sharing verwendet, um die JdbcTemplate init kann mehr Sinn machen). Im Allgemeinen ist eine (nicht-statische) Instanz pro Klasse ausreichend, JdbcTemplate behandelt Threading-Probleme von selbst und Sie werden nie Probleme mit Parallelität neben Datenbanksperren bekommen.

2

Um zu den anderen Antworten hinzuzufügen, ist JdbcTemplate sehr leicht, und die Baukosten sind fast Null. Also, wenn Sie wurden, um eine neue bei jeder Operation zu erstellen, würde es wahrscheinlich keine Nebenwirkungen oder sinnvolle Leistungseinbußen. Die Klasse ist lediglich ein Verhaltenswrapper rund um die JDBC-API. Aus der gleichen Logik heraus gibt es keinen Grund, vorsichtig zu sein, um sicherzustellen, dass Sie nur ein JdbcTemplate Objekt haben. Es sollte zu dem von Ihnen gewählten Design passen.

Die meisten DAOs instanziieren JdbcTemplate direkt. Stattdessen Unterklasse JdbcDaoSupport, die eine JdbcTemplate Instanz für Sie verwalten. Ihre Unterklasse ruft dann getJdbcTemplate() auf, um die Instanz abzurufen. Wenn Sie JdbcDaoSupport nicht unterklassifizieren, erstellen Sie eine Instanz von JdbcTemplate, wenn Ihre DAO-Bean initialisiert wird, und verwenden Sie sie erneut.

Das gleiche gilt für die anderen DAO-Vorlagenklassen (Hibernate, JPA usw.).

Verwandte Themen