Projet JEE 7 sans hibernate ni JPA

Dans cet article, nous allons étudier la possibilité de créer un projet JEE 7 classique mais en supprimant la partie JPA / Hibernate.
Pierre LISERONMis à jour le 7 Mai 2014

Pourquoi se passer dHibernate?

Les gains de JPA / Hibernate sont rééls au début dun projet :

Les problèmes majeurs dHibernate / JPA :

A cela se rajoutent des contraintes dordre organisationnel :

En fin de compte, il apparaît assez clairement avec lexpérience et le recul que les quelques facilités que JPA / Hibernate est susceptible de proposer sont insignifiantes en face de linfinité de bugs et de difficultés de développement quil impose. Cette prise de conscience réalisée, le retour aux fondamentaux devient inéluctable.

Réalisation dun projet sans Hibernate / JPA

Création de manager

Injection de la Datasource avec @Resource

private DataSource mDataSource;

Création dune méthode de listing

public List listCommandeForClientId(int pIdClient) {
    String lSelectCommandeQuery = "SELECT  commande_id FROM client WHERE client_id=? ORDER BY id DESC";

    List lResults = new ArrayList();
    try (Connection lConnection = mDataSource.getConnection();
            PreparedStatement lPreparedStatement = lConnection
                    .prepareStatement(lSelectCommandeQuery);)
                    {
        lPreparedStatement.setInt(1, pIdClient);
        ResultSet rs = lPreparedStatement.executeQuery();
        Commande lCommande = null;
        while (rs.next()) {
            lCommande = new Commande();
            lCommande.setId(rs.getInt("commande_id"));
            lResults.add(lCommande);
        }
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return lResults;
}

Conclusion

Le retour au JDBC est facilité par linjection de la datasource et la gestion des pools de connexions par le serveur dapplication, ainsi que par la structure de langage try-with-resources. De ce fait, cette technologie devient simple à implémenter, tout en étant clairement la plus performante dans le monde JavaLangage de développement très populaire !. Lensemble des contraintes négatives apportées par JPA / Hibernate disparaissent, tandis quà linverse on regrette peu des avantages de ce dernier. On concèdera tout de même que les mappings champs à champs sont un peu fastidieux. Mais à chaque instant on sait ce que lon a dans ses objets dencapsulation de données, et lon ne passe que les requêtes nécessaires. Labandon dHibernate au profit de JDBC est donc bien bénéfique.

jpa