Maison base de données tutoriel mysql Hibernate 中get, load 区别

Hibernate 中get, load 区别

Jun 07, 2016 pm 05:13 PM
hibernate

对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库

1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本中get方法也会查找二级缓存!

2.  load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:

(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。

(2)若为false,就跟get方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。

这里get和load有两个重要区别:

如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
load方法可返回没有加载实体数据的代理类实例,而get方法永远返回有实体数据的对象。(对于load和get方法返回类型:好多书中都说:“get方法永远只返回实体类”,实际上并不正确,get方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。)

linux

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment intégrer Hibernate dans le projet SpringBoot Comment intégrer Hibernate dans le projet SpringBoot May 18, 2023 am 09:49 AM

Intégration d'Hibernate dans le projet SpringBoot Préface Hibernate est un framework ORM (Object Relational Mapping) populaire qui peut mapper des objets Java à des tables de base de données pour faciliter les opérations de persistance. Dans le projet SpringBoot, l'intégration d'Hibernate peut nous aider à effectuer plus facilement des opérations de base de données. Cet article présentera comment intégrer Hibernate dans le projet SpringBoot et fournira des exemples correspondants. 1.Introduire les dépendancesIntroduire les dépendances suivantes dans le fichier pom.xml : org.springframework.bootspring-boot-starter-data-jpam

Erreurs Java : erreurs de mise en veille prolongée, comment les gérer et les éviter Erreurs Java : erreurs de mise en veille prolongée, comment les gérer et les éviter Jun 25, 2023 am 09:09 AM

Java est un langage de programmation orienté objet largement utilisé dans le domaine du développement de logiciels. Hibernate est un framework de persistance Java populaire qui fournit un moyen simple et efficace de gérer la persistance des objets Java. Cependant, des erreurs Hibernate sont souvent rencontrées au cours du processus de développement, et ces erreurs peuvent entraîner une fin anormale du programme ou devenir instable. Comment gérer et éviter les erreurs Hibernate est devenu une compétence que les développeurs Java doivent maîtriser. Cet article présentera quelques Hib courants

Quelles sont les différences entre hiberner et mybatis Quelles sont les différences entre hiberner et mybatis Jan 03, 2024 pm 03:35 PM

Les différences entre hibernate et mybatis : 1. Méthode de mise en œuvre ; 2. Performances 3. Comparaison de la gestion des objets ; Introduction détaillée : 1. Méthode d'implémentation, Hibernate est une solution complète de mappage objet/relationnel qui mappe les objets aux tables de base de données, tandis que MyBatis oblige les développeurs à écrire manuellement des instructions SQL et ResultMap 2. Performances, Hibernate est possible en termes de vitesse de développement Plus rapide que ; MyBatis car Hibernate simplifie la couche DAO et ainsi de suite.

Comment effectuer des opérations de mise à jour d'insertion groupée dans Hibernate ? Comment effectuer des opérations de mise à jour d'insertion groupée dans Hibernate ? Aug 27, 2023 pm 11:17 PM

Dans cet article, nous verrons comment effectuer une insertion/mise à jour groupée dans Hibernate. Chaque fois que nous exécutons une instruction SQL, nous le faisons en effectuant un appel réseau à la base de données. Désormais, si nous devons insérer 10 entrées dans la table de la base de données, nous devons alors effectuer 10 appels réseau. Au lieu de cela, nous pouvons optimiser les appels réseau en utilisant le traitement par lots. Le traitement par lots nous permet d'exécuter un ensemble d'instructions SQL en un seul appel réseau. Pour comprendre et mettre en œuvre cela, définissons notre entité - @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Quelle est la méthode de mappage des relations un-à-plusieurs et plusieurs-à-plusieurs dans Java Hibernate Quelle est la méthode de mappage des relations un-à-plusieurs et plusieurs-à-plusieurs dans Java Hibernate May 27, 2023 pm 05:06 PM

Hibernate un-à-plusieurs et plusieurs-à-plusieurs d'Hibernate est un excellent framework ORM qui simplifie l'accès aux données entre les applications Java et les bases de données relationnelles. Dans Hibernate, nous pouvons utiliser des relations un-à-plusieurs et plusieurs-à-plusieurs pour gérer des modèles de données complexes. Le un-à-plusieurs d'Hibernate Dans Hibernate, une relation un-à-plusieurs signifie qu'une classe d'entité correspond à plusieurs autres classes d'entités. Par exemple, une commande peut correspondre à plusieurs articles de commande (OrderItem), et un utilisateur (User) peut correspondre à plusieurs commandes (Order). Pour implémenter une relation un-à-plusieurs dans Hibernate, vous devez définir un attribut de collection dans la classe d'entité à stocker

Obtenez une compréhension approfondie de la pile technologique du framework Java : explorez les frameworks Java courants tels que Spring MVC, Hibernate, MyBatis, etc. Obtenez une compréhension approfondie de la pile technologique du framework Java : explorez les frameworks Java courants tels que Spring MVC, Hibernate, MyBatis, etc. Dec 26, 2023 pm 12:50 PM

Pile technologique du framework Java : présentation des frameworks Java couramment utilisés, tels que SpringMVC, Hibernate, MyBatis, etc. Avec le développement continu de Java, de plus en plus de frameworks ont été développés pour simplifier le processus de développement. Parmi eux, SpringMVC, Hibernate, MyBatis, etc. sont l'un des frameworks les plus couramment utilisés dans le développement Java. Cet article présentera les concepts de base et l'utilisation de ces cadres pour aider les lecteurs à mieux comprendre et appliquer ces cadres. Commençons par présenter Sp

Introduction au framework Hibernate en langage Java Introduction au framework Hibernate en langage Java Jun 10, 2023 am 11:35 AM

Hibernate est un framework ORM open source qui lie le mappage des données entre les bases de données relationnelles et les programmes Java, facilitant ainsi l'accès des développeurs aux données de la base de données. L'utilisation du framework Hibernate peut réduire considérablement le travail d'écriture des instructions SQL et améliorer l'efficacité du développement et la réutilisabilité des applications. Présentons le framework Hibernate sous les aspects suivants. 1. Avantages du framework Hibernate : mappage objet-relationnel, masquage des détails d'accès à la base de données, réalisation du développement

Comment fonctionne le cache Hibernate de deuxième niveau ? Comment fonctionne le cache Hibernate de deuxième niveau ? Sep 14, 2023 pm 07:45 PM

La mise en cache permet de réduire les appels réseau de base de données lors de l'exécution de requêtes. Cache de niveau 1 et liaison de session. Il est implémenté implicitement. Le cache de premier niveau existe jusqu'à ce que l'objet de session existe. Une fois l’objet de session terminé/fermé, il n’y aura aucun objet mis en cache. Le cache de deuxième niveau fonctionne pour plusieurs objets de session. Il est lié à la fabrique de sessions. Les objets de cache de deuxième niveau sont disponibles pour toutes les sessions à l'aide d'une seule fabrique de sessions. Ces objets de cache prendront fin lorsqu'une fabrique de sessions spécifique sera fermée. Pour implémenter le cache de deuxième niveau, nous devons ajouter les dépendances suivantes pour utiliser le cache de deuxième niveau. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de

See all articles