La principale différence est de savoir s'il est retardé de chargement.
La méthode de chargement n'accède pas immédiatement à la base de données et lorsque l'enregistrement a tenté de charger n'existe pas, la méthode de charge renvoie un objet proxy non initialisé.
Obtenir la méthode
Accédez toujours immédiatement à la base de données. Lorsque l'enregistrement a tenté de charger n'existe pas, retournez NULL directement
Il existe deux méthodes trouvées dans Hibernate qui sont très similaires. Après l'avoir examiné, j'ai trouvé
Il existe deux méthodes très similaires dans Hibernate, Get () et Load (). Ils peuvent à la fois lire les données de la base de données via la classe d'entité et l'ID spécifiés et renvoyer l'instance correspondante. Cependant, Hibernate ne fera pas exactement les mêmes méthodes. La différence entre eux est:
Get Is Is interroger directement la base de données. S'il ne peut être trouvé, il retournera null. La charge sera d'abord chargée à partir de la mémoire. S'il n'a pas été chargé ou interrogé auparavant, interrogeant la base de données.
La différence fondamentale entre la méthode GET et la méthode de charge dans Hibernate est que si vous utilisez la méthode de charge, Hibernate estime que l'objet (enregistrement de la base de données) correspondant à l'ID doit exister dans la base de données, afin qu'il puisse être utilisé avec confiance, et il peut utiliser le proxy pour retarder le chargement de l'objet. La base de données n'est interrogée que lorsque d'autres données d'attribut dans l'objet sont utilisées, mais si l'enregistrement n'existe pas dans la base de données, il n'y a aucun moyen et vous ne pouvez lancer que des exceptions. La méthode de charge lance des exceptions signifie que lors de l'utilisation des données de l'objet, les exceptions sont lancées lorsque les données n'existent pas dans la base de données, plutôt que lors de la création de cet objet. Étant donné que le cache de la session est une ressource très bon marché pour Hibernate, lors du chargement, nous vérifierons d'abord le cache de session pour voir si l'objet correspondant à l'ID existe. S'il n'existe pas, un proxy sera créé. Donc, si vous savez que l'ID doit avoir un enregistrement correspondant dans la base de données, vous pouvez utiliser la méthode de chargement pour obtenir un chargement paresseux. Pour la méthode GET, Hibernate confirmera si les données correspondant à l'ID existent. Tout d'abord, consultez le cache de session, puis recherchez dans le cache secondaire. Si cela n'a pas encore été fait, recherchez la base de données, et si cela n'a pas été fait dans la base de données, renvoyez NULL.
2. La méthode Get interroge d'abord le cache de session, sinon, interroge le cache secondaire, et finit enfin la base de données; Au contraire, lorsque la méthode de charge est créée, le cache de session est la première requête, et s'il n'y a pas d'agent créé, le cache et la base de données secondaires ne sont interrogées que lorsque les données sont réellement utilisées.
En bref, pour la différence fondamentale entre Get et Load, en un mot, Hibernate estime que les données doivent exister dans la base de données pour la méthode de chargement et peuvent utiliser le proxy pour retarder le chargement avec confiance. Si un problème est trouvé lors de l'utilisation, il ne peut que lancer des exceptions; Pour la méthode GET, Hibernate doit obtenir les données réelles, sinon elle renverra NULL.
1. Si aucun enregistrement qui répond aux critères n'est trouvé, la méthode get () retournera null. Et Load () rapportera un objetNotFoundEcception.
2. La méthode Load () peut renvoyer l'instance de classe proxy d'une entité, tandis que GET () ne renvoie toujours que la classe d'entité.
3. La méthode de charge () peut utiliser pleinement les données existantes dans le cache secondaire et le cache interne, tandis que la méthode GET () ne recherche que dans le cache interne. Si aucune donnée correspondante n'est trouvée, le cache secondaire sera ignoré et SQL sera directement appelé pour effectuer la recherche.