J'ai construit une application avec Angular, SpringBoot et MySQL Database. Il utilise CrudRepository et je ne le comprends pas (tout fonctionne bien). Comment les contrôleurs / référentiels savent-ils de quelle table obtenir les données? Je veux dire, je ne spécifie pas le nom de la table. Quelqu'un peut-il m'expliquer comment cela fonctionne?
3 Réponses :
Lorsque vous étendez CrudRepository , vous définissez son type générique. Dans Ici, vous indiquez à partir de quelle classe Entity le référentiel récupérera les données. Et les classes Entity dans JPA sont utilisées pour représenter les Tables . Voilà comment il sait d'où trouver les données. par exemple:
public interface UserRepository extends CrudRepository<User, Long> {
}
Dans le code ci-dessus, j'ai spécifié le type générique comme étant User , également User est ma classe Entity qui représente Table des utilisateurs dans ma base de données . Donc, ce référentiel traitera de la table des utilisateurs .
Dans l'application JPA de Spring Boot Data, tout modèle est annoté avec @Entity ou avec @Table (name = "User") . Dans le cas de l'ancien, le nom de la table par défaut est le même que le nom de l'entité.
De plus, lorsque vous créez un référentiel comme:
interface publique UserRepository étend CrudRepository l'implémentation par défaut de Entity c'est-à-dire que l'utilisateur est appelé à effectuer toutes les opérations de manière générique.
J'ai trouvé l'explication suivante utile car elle passe par toutes les combinaisons possibles de @Entity et @Table et répertorie la requête correspondante.
https://walkingtechie.blogspot.com/2019/ 06 / difference-between-entity-and-table.html