97 votes

JPA vs Spring JdbcTemplate

Pour un nouveau projet, JPA est-il toujours l'outil recommandé pour gérer les données relationnelles ou existe-t-il des scénarios où Spring JdbcTemplate est un meilleur choix ? Quelques facteurs à prendre en compte dans votre réponse :

  • nouveau schéma de base de données vs schéma et tables préexistants
  • niveau d'expertise du développeur
  • avec laquelle il est facile de s'intégrer à une couche de mise en antémémoire de données
  • performance
  • d'autres facteurs pertinents à prendre en considération ?

42voto

ams Points 9588

Il n'est pas mentionné dans les autres réponses, mais il est bon d'utiliser les deux. Dans mon App, j'utilise JPA et JdbcTemplate, pour les opérations de type crud j'utilise JPA mais pour les rapports ou là où c'est plus facile j'utilise jdbcTemplate.

@Repository
public class FooRepository
{
    @PersistenceContext
    private EntityManager entityManager;

    @Autowired(required = true)
    private JdbcTemplate jdbcTemplate;

    public void saveFoo(Foo foo)
    {
         this.entityManager.persist(foo);
    }

    public List<SomeReportPojo> getSomeReport()
    {
         return this.jdbcTemplate.queryForList("SELECT .. ",SomeProjectPojo.class); 
    }
}

La grande chose à propos de Spring est que la traduction d'exception des exceptions JPA vers la hiérarchie des exceptions Dao de printemps fonctionne à la fois avec JPA et jdbcTemplate. Utilisez donc JPA quand cela a du sens et jdbcTemplate quand cela a du sens.

5voto

user3131171 Points 11

Au travail, nous utilisons Hibernate JDBCTemplate car il offre plus de flexibilité. Il a également de meilleures performances que JPA parce que vous ne "chargez" pas beaucoup de données inutiles dans votre application.
Dans le cas de JDBCTemplate, vos compétences SQL contribuent grandement à vous donner exactement ce dont vous avez besoin à la bonne vitesse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X