JDBC est une API de bas niveau, lorsque nous écrivions nos méthodes, nous devons à chaque fois effectuer la traduction entre la classe Java Client et sa représentation en SQL.
- Nous avons donc une grande quantitĂ© de code trĂšs identique les unes des autres oĂč souvent seul les attributs de la requĂȘte SQL changent
- De plus, JDBC impose de connaĂźtre le moteur de la base de donnĂ©es cible, or chaque SGBD peut offrir quelques variantes ou fonctionnalitĂ©s complĂ©mentaires qui ne peuvent pas ĂȘtre utilisĂ© avec JDBC. Par exemple, le mot clĂ©
LIMITnâest pas un standard SQL mais une spĂ©cificitĂ© de MySQL. - â Il faudrait donc automatiser lâĂ©criture de nos requĂȘte sâen tenir compte des SGBD
public Client getById(long id) {
Connection conn = null;
Client client = null;
try {
DataSource dataSource = DataSourceProvider.getSingleDataSourceInstance();
conn = dataSource.getConnection();
PreparedStatement preparedStatement = conn.prepareStatement(
"SELECT nom, prenom FROM Client WHERE ID=?"
);
preparedStatement.setLong(1, id);
ResultSet rs = preparedStatement.executeQuery();
if (rs.next()) {
client = new Client();
client.setId(id);
client.setNom(rs.getString("NOM"));
client.setPrenom(rs.getString("PRENOM"));
}
System.out.println("Client lu");
} catch (SQLException e) {
....
}
return client;
}