Im apprentissage printemps (2 et 3) et je suis arrivé cette méthode dans un ClientDaoSpring JDBC DAO
public Client getClient(int id) {
List<Client> clients= getSimpleJdbcTemplate().query(
CLIENT_GET,
new RowMapper<Client>() {
public Client mapRow(ResultSet rs, int rowNum) throws SQLException {
Client client = new ClientImpl(); // !! this (1)
client.setAccounts(new HashSet<Account>()); // !! this (2)
client.setId(rs.getInt(1));
client.setName(rs.getString(2));
return client;
}
},id
);
return clients.get(0);
}
et le suivant le câblage du printemps:
<bean id="account" class="client.AccountRON" scope="prototype">
<property name="currency" value = "RON" />
<property name="ammount" value="0" />
</bean>
<bean id="client" class="client.ClientImpl" scope="prototype">
<property name="name" value="--client--" />
<property name="accounts">
<set>
</set>
</property>
</bean>
Les choses est que je ne aime pas la lignes commentées de code java (1) et (2). Je vais commencer par (2) que je pense est le facile: est-il un moyen que je peux câbler le bean dans le fichier .xml pour dire au printemps d'instancier une implémentation pour l'ensemble 'accounts' dans ClientImpl? donc je peux me débarrasser de (2)
Passons maintenant à (1): que se passe-t-il si l'implémentation change? ai-je vraiment besoin d'écrire un autre DAO pour une implémentation différente? ou dois-je construire une BeanFactory? ou y a-t-il une autre solution plus belle?
Merci!
Merci. Je ne sais pas pourquoi je pensais qu'avoir une usine dans le DAO était mauvais. Maintenant ça semble aller. Je dois être fatigué. – Blitzkr1eg