Êtes-vous un étudiant de l'EPFL à la recherche d'un projet de semestre?
Travaillez avec nous sur des projets en science des données et en visualisation, et déployez votre projet sous forme d'application sur Graph Search.
Un mapping objet-relationnel (en anglais object-relational mapping ou ORM) est un type de programme informatique qui se place en interface entre un programme applicatif et une base de données relationnelle pour simuler une base de données orientée objet. Ce programme définit des correspondances entre les schémas de la base de données et les classes du programme applicatif. On pourrait le désigner par là « comme une couche d'abstraction entre le monde objet et monde relationnel ». Du fait de sa fonction, on retrouve ce type de programme dans un grand nombre de frameworks sous la forme de composant ORM qui a été soit développé, soit intégré depuis une solution externe. L'utilisation de la programmation orientée objet avec une base de données relationnelle nécessite de convertir les données relationnelles en objets et vice-versa. Ceci conduit à programmer cette conversion pour chaque objet et donc à dupliquer énormément de code similaire. Illustration de code Java qui utilise l'API JDBC sans ORM pour récupérer les données relationnelles d'un client (customer en anglais) afin de les transformer en un objet Java : public Customer loadCustomer(long customerId, Connection connection) { if (0 == customerId || connection == null) { return null; } PreparedStatement statement = null; try { // préparation de la requête à la base de données statement = connection.prepareStatement( " SELECT CUSTOMER_ID, CUSTOMER_NAME, CUSTOMER_ADDRESS " " FROM CUSTOMER WHERE CUSTOMER_ID = ? "); statement.setLong(1, customerId); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { // transformation des données relationnelles en objet "Customer" Customer customer = new Customer(); int index = 1; customer.setCustomerId(resultSet.getLong(index++)); customer.setCustomerName(resultSet.getString(index++)); customer.setCustomerAddress(resultSet.getString(index++)); return customer; } } catch (final Exception e) { log.info("", e); } finally { // nettoyage if (statement != null) { try { statement.close(); } catch (final SQLException e) { log.
Mathieu Salzmann, Zheng Dang, Yu Guo
Nicola Marzari, Sokseiha Muy, Conrad Johnston
Sabine Süsstrunk, Mathieu Salzmann, Tong Zhang, Yi Wu