Avatar ·

Qual é a diferença entre CrudRepository e JpaRepository no Spring Data JPA?

Olá a todos! Sou novo no Spring e Spring Data JPA, e fico constantemente confuso com essas duas interfaces. Quando vejo exemplos na internet, percebo que alguns usam `CrudRepository` e outros usam `JpaRepository`. \n\nPor exemplo, é assim que normalmente declaro meus repositórios:\n\n```java\npublic interface UserRepository extends CrudRepository {\n User findByEmail(String email);\n}\n```\n\nMas também vi esta variação:\n\n```java\npublic interface UserRepository extends JpaRepository {\n User findByEmail(String email);\n}\n```\n\nAmbos funcionam, ambos fornecem métodos save(), findById(), findAll(), delete() e assim por diante. Qual é a diferença então? Por que o Spring criou duas interfaces diferentes?\n\nSerá que JpaRepository é apenas uma versão mais nova do CrudRepository? Ou eles têm funcionalidades diferentes? Tentei pesquisar no Google, mas as respostas em inglês são muito complexas para mim. Por favor, expliquem em palavras simples quando usar cada interface e quais são suas principais diferenças. Ficarei muito grato.