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Ă© LIMIT n’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;
}