Table des matières
Un-à-plusieurs et plusieurs-à-plusieurs d'Hibernate
Le un-à-plusieurs d'Hibernate
Configuration un-à-plusieurs d'Hibernate
Hibernate的一对多操作
Hibernate的多对多
Hibernate的多对多配置
Hibernate的多对多操作
Hibernate的级联操作
Hibernate的延迟加载
Maison Java javaDidacticiel 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
java hibernate

Un-à-plusieurs et plusieurs-à-plusieurs d'Hibernate

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, les modèles de données complexes peuvent être gérés à l'aide de relations un-à-plusieurs et plusieurs-à-plusieurs.

Le un-à-plusieurs d'Hibernate

Dans Hibernate, une classe d'entité correspondant à plusieurs autres classes d'entités est appelée une relation un-à-plusieurs. 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é pour stocker plusieurs objets associés et configurer l'association dans le fichier de mappage.

Configuration un-à-plusieurs d'Hibernate

Dans la classe d'entité, nous devons définir un attribut de collection pour stocker plusieurs objets associés, comme indiqué ci-dessous :

public class Order {
    private Long id;
    private Date orderDate;
    private List<OrderItem> items = new ArrayList<OrderItem>();
    // getters and setters
}
Copier après la connexion

Dans le fichier de mappage, nous devons utiliser < set> pour configurer les attributs et les relations définis, comme indiqué ci-dessous : <set>标签来配置集合属性和关联关系,如下所示:

<class name="Order" table="orders">
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="orderDate" column="order_date"/>
    <set name="items" table="order_items" inverse="true" cascade="all">
        <key column="order_id"/>
        <one-to-many class="OrderItem"/>
    </set>
</class>
Copier après la connexion

其中,<set>标签中的name属性对应实体类中的集合属性名,table属性对应关联表的名称,inverse属性表示是否将关联关系交给集合属性维护,cascade属性表示级联操作,<key>标签用于指定关联表中的外键列,<one-to-many>标签用于指定关联实体类。

Hibernate的一对多操作

在Hibernate中,我们可以通过集合属性来访问关联对象。例如,我们可以通过getItems()方法获取一个订单的所有订单项,通过addItem(item)方法向订单中添加一个订单项,如下所示:

Order order = session.get(Order.class, orderId);
List<OrderItem> items = order.getItems();
OrderItem item = new OrderItem();
// set item properties
order.addItem(item);
Copier après la connexion

Hibernate的一对多关系可以解决实际问题中的很多复杂数据模型,比如,在电商网站中,一个订单(Order)可能会包含多个订单项(OrderItem),一个订单项又可能包含多个商品信息(Product)。

Hibernate的多对多

多对多关系在Hibernate中表示多个实体类之间相互关联。比如,一个学生(Student)可以选修多个课程(Course),一个课程(Course)可以被多个学生(Student)选修。要在Hibernate中实现多对多关系,需要在实体类中定义一个集合属性来存储多个关联对象,同时在映射文件中配置关联关系。

Hibernate的多对多配置

在实体类中,我们需要定义一个集合属性来存储多个关联对象,如下所示:

public class Student {
    private Long id;
    private String name;
    private List<Course> courses = new ArrayList<Course>();
    // getters and setters
}
Copier après la connexion

在映射文件中,我们需要使用<set>标签来配置集合属性和关联关系,如下所示:

<class name="Student" table="students">
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="name" column="name"/>
    <set name="courses" table="student_courses">
        <key column="student_id"/>
        <many-to-many column="course_id" class="Course"/>
    </set>
</class>
Copier après la connexion

其中,<set>标签中的name属性对应实体类中的集合属性名,table属性对应关联表的名称,<key>标签用于指定关联表中的外键列,<many-to-many>标签用于指定关联实体类。

Hibernate的多对多操作

在Hibernate中,我们可以通过集合属性来访问关联对象。例如,我们可以通过getCourses()方法获取一个学生选修的所有课程,通过addCourse(course)方法向学生中添加一个课程,如下所示:

Student student = session.get(Student.class, studentId);
List<Course> courses = student.getCourses();
Course course = new Course();
// set course properties
student.addCourse(course);
Copier après la connexion

Hibernate的多对多关系可以解决实际问题中的很多复杂数据模型,比如,在学校中,一个学生(Student)可以选修多个课程(Course),一个课程(Course)也可以被多个学生(Student)选修。

Hibernate的级联操作

在Hibernate中,我们可以通过配置级联操作来简化数据库操作。比如,我们可以在映射文件中配置cascade属性来实现级联操作,如下所示:

<set name="items" table="order_items" inverse="true" cascade="all">
Copier après la connexion

其中,cascade属性可以设置为allsave-updatedeletedelete-orphan等值,分别表示所有操作、保存和更新操作、删除操作、删除孤儿操作等。

Hibernate的级联操作可以极大地简化代码量,提高开发效率。

Hibernate的延迟加载

在Hibernate中,我们可以使用延迟加载来提高数据库访问性能。比如,我们可以在映射文件中配置lazy属性来实现延迟加载,如下所示:

<set name="items" table="order_items" inverse="true" cascade="all" lazy="true">
Copier après la connexion

其中,lazy属性可以设置为truefalse

String hql = "from Course as c where c.id in (select sc.course.id from StudentCourse as sc where sc.student.id = :studentId)";
Query query = session.createQuery(hql);
query.setParameter("studentId", studentId);
List<Course> courses = query.list();
Copier après la connexion
Copier après la connexion

Parmi eux, l'attribut name dans la balise <set> correspond à l'attribut dans la classe d'entité Le nom de l'attribut de collection. L'attribut table correspond au nom de la table d'association. L'attribut inverse indique s'il faut remettre la relation d'association. à l'attribut de collection pour la maintenance. L'attribut cascade indique le niveau. Pour les opérations de jointure, la balise <key> est utilisée pour spécifier la colonne de clé étrangère dans la table associée. , et la balise <one-to-many> est utilisée pour spécifier la classe d'entité associée.

Opération un-à-plusieurs d'Hibernate

Dans Hibernate, nous pouvons accéder aux objets associés via les propriétés de la collection. Par exemple, nous pouvons obtenir tous les éléments de campagne d'une commande via la méthode getItems(), et ajouter un élément de commande à la commande via la méthode addItem(item), comme indiqué ci-dessous :

rrreee

La relation un-à-plusieurs d'Hibernate peut résoudre de nombreux modèles de données complexes dans des problèmes pratiques. Par exemple, dans un site Web de commerce électronique, une commande (Commande) peut contenir plusieurs éléments de commande (OrderItem) et un. L'article de commande peut contenir plusieurs articles de commande. Informations sur le produit (Produit).

La relation plusieurs-à-plusieurs d'Hibernate🎜🎜La relation plusieurs-à-plusieurs représente la corrélation entre plusieurs classes d'entités dans Hibernate. Par exemple, un étudiant peut suivre plusieurs cours et un cours peut être suivi par plusieurs étudiants. Pour implémenter une relation plusieurs-à-plusieurs dans Hibernate, vous devez définir un attribut de collection dans la classe d'entité pour stocker plusieurs objets associés et configurer l'association dans le fichier de mappage. 🎜🎜Configuration plusieurs-à-plusieurs d'Hibernate🎜🎜Dans la classe d'entité, nous devons définir un attribut de collection pour stocker plusieurs objets associés, comme indiqué ci-dessous : 🎜rrreee🎜Dans le fichier de mappage, nous devons utiliser < set> pour configurer les attributs et les relations définis, comme indiqué ci-dessous : 🎜rrreee🎜 Parmi eux, l'attribut name dans la balise <set> correspond à l'attribut dans la classe d'entité Nom de l'attribut Collection, l'attribut table correspond au nom de la table associée, la balise <key> est utilisée pour spécifier la colonne de clé étrangère dans le table associée, <many-to La balise -many> est utilisée pour spécifier la classe d'entité associée. 🎜🎜Opération plusieurs-à-plusieurs d'Hibernate🎜🎜Dans Hibernate, nous pouvons accéder aux objets associés via les propriétés de la collection. Par exemple, nous pouvons récupérer tous les cours suivis par un étudiant via la méthode getCourses(), et ajouter un cours à l'étudiant via la méthode addCourse(course), comme illustré ci-dessous : 🎜rrreee 🎜La relation plusieurs-à-plusieurs d'Hibernate peut résoudre de nombreux modèles de données complexes dans des problèmes pratiques. Par exemple, dans une école, un étudiant (Étudiant) peut suivre plusieurs cours (Cours) et un cours (Cours) peut. également être utilisé par plusieurs étudiants (étudiants) au choix. 🎜🎜Opérations en cascade d'Hibernate🎜🎜Dans Hibernate, nous pouvons simplifier les opérations de base de données en configurant les opérations en cascade. Par exemple, nous pouvons configurer l'attribut cascade dans le fichier de mappage pour implémenter des opérations en cascade, comme indiqué ci-dessous : 🎜rrreee🎜Parmi eux, l'attribut cascade peut être défini sur < code>all< /code>, save-update, delete, delete-orphan et d'autres valeurs, représentent respectivement toutes les opérations, sauvegarde et mise à jour opérations, opérations de suppression, opérations de suppression orphelines, etc. 🎜🎜Le fonctionnement en cascade d'Hibernate peut grandement simplifier la quantité de code et améliorer l'efficacité du développement. 🎜🎜Chargement paresseux d'Hibernate🎜🎜Dans Hibernate, nous pouvons utiliser le chargement paresseux pour améliorer les performances d'accès à la base de données. Par exemple, nous pouvons configurer l'attribut lazy dans le fichier de mappage pour implémenter le chargement différé, comme indiqué ci-dessous : 🎜rrreee🎜Parmi eux, l'attribut lazy peut être défini sur < code>true ou false, indiquant respectivement l'activation du chargement différé et du chargement immédiat. 🎜🎜Le chargement paresseux d'Hibernate peut considérablement améliorer les performances d'accès à la base de données et réduire les opérations de base de données inutiles. 🎜🎜Requête Hibernate🎜🎜Dans Hibernate, nous pouvons utiliser HQL (Hibernate Query Language) pour interroger la base de données. HQL est similaire à SQL, mais il s'agit d'un langage de requête orienté objet qui utilise les concepts d'objets et d'attributs au lieu de tables et de colonnes. 🎜🎜Par exemple, nous pouvons utiliser HQL pour interroger tous les cours suivis par un étudiant, comme indiqué ci-dessous : 🎜
String hql = "from Course as c where c.id in (select sc.course.id from StudentCourse as sc where sc.student.id = :studentId)";
Query query = session.createQuery(hql);
query.setParameter("studentId", studentId);
List<Course> courses = query.list();
Copier après la connexion
Copier après la connexion

Hibernate的查询功能非常强大,可以灵活地满足不同的查询需求。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles