Maison Java javaDidacticiel hibernate_association mapping_one-to-many

hibernate_association mapping_one-to-many

Jun 23, 2017 pm 04:28 PM
hibernate un à plusieurs association 映射

relation de cartographie d'hibernation

un à plusieurs, plusieurs à un, Un-à-un, plusieurs-à-plusieurs.

Les plus couramment utilisés sont un à plusieurs et plusieurs à un.

Dans la base de données, vous pouvez exprimer une relation un-à-plusieurs en ajoutant des associations de clés primaires et étrangères En veille prolongée, une partie en détient plusieurs ; Définir l'implémentation, c'est-à-dire utiliser l'élément à l'extrémité "un" pour représenter l'objet contenant l'extrémité "plusieurs".

Ce qui suit implémente une démo "un-à-plusieurs" d'ajout, de suppression, de modification et de requête : une classe correspond à plusieurs étudiants.

Créez d'abord la classe d'élève Étudiant

 1 package com.imooc.entity; 2  3 import java.io.Serializable; 4  5 public class Student implements Serializable { 6  7     private int sid; 8     private String sname; 9     private String sex;10     // 在多方定义一个一方的引用11     private Grade grade;12     13     public int getSid() {14         return sid;15     }16     public void setSid(int sid) {17         this.sid = sid;18     }19     public String getSname() {20         return sname;21     }22     public void setSname(String sname) {23         this.sname = sname;24     }25     public String getSex() {26         return sex;27     }28     public void setSex(String sex) {29         this.sex = sex;30     }31     public Grade getGrade() {32         return grade;33     }34     public void setGrade(Grade grade) {35         this.grade = grade;36     }37     38     public Student() {39         super();40     }41     42     public Student(String sname, String sex) {43         super();44         this.sname = sname;45         this.sex = sex;46     }47     48 }
Copier après la connexion
Afficher le code

Créer une note de classe

 1 package com.imooc.entity; 2  3 import java.io.Serializable; 4 import java.util.HashSet; 5 import java.util.Set; 6  7  8 public class Grade implements Serializable { 9 10     private int gid;11     private String gname;12     private String gdesc;13     private Set<Student> students = new HashSet<Student>();14     15     public int getGid() {16         return gid;17     }18     public void setGid(int gid) {19         this.gid = gid;20     }21     public String getGname() {22         return gname;23     }24     public void setGname(String gname) {25         this.gname = gname;26     }27     public String getGdesc() {28         return gdesc;29     }30     public void setGdesc(String gdesc) {31         this.gdesc = gdesc;32     }33     public Set<Student> getStudents() {34         return students;35     }36     public void setStudents(Set<Student> students) {37         this.students = students;38     }39     40     public Grade() {41         super();42     }43     44     public Grade(int gid, String gname, String gdesc) {45         super();46         this.gid = gid;47         this.gname = gname;48         this.gdesc = gdesc;49     }50     51     public Grade(String gname, String gdesc) {52         super();53         this.gname = gname;54         this.gdesc = gdesc;55     }56 }
Copier après la connexion
Afficher le code

Créer le fichier de mappage Student.hbm.xml de la classe Student

 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final --> 5 <hibernate-mapping> 6     <class name="com.imooc.entity.Student" table="STUDENT"> 7         <id name="sid" type="int"> 8             <column name="SID" /> 9             <generator class="increment" />10         </id>11         <property name="sname" type="java.lang.String">12             <column name="SNAME" />13         </property>14         <property name="sex" type="java.lang.String">15             <column name="SEX" />16         </property>17     </class>18 </hibernate-mapping>
Copier après la connexion
Afficher le code

Créer le fichier de mappage Grade.hbm.xml de la classe Grade

 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final --> 5 <hibernate-mapping> 6     <class name="com.imooc.entity.Grade" table="GRADE"> 7         <id name="gid" type="int"> 8             <column name="GID" /> 9             <generator class="increment" />10         </id>11         <property name="gname" type="java.lang.String">12             <column name="GNAME" length="20" not-null="true" />13         </property>14         <property name="gdesc" type="java.lang.String">15             <column name="GDESC" />16         </property>17         <!-- 指定关联的外键列 -->18         <set name="students" table="STUDENT">19             <key>20                 <column name="GID" />21             </key>22             <one-to-many class="com.imooc.entity.Student" />23         </set>24     </class>25 </hibernate-mapping>
Copier après la connexion
Afficher le code

Créer un fichier de configuration de mise en veille prolongée

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6     <session-factory> 7         <property name="connection.username">root</property> 8         <property name="connection.password">root</property> 9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>10         <property name="connection.url">11             <![CDATA[12                 jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-813             ]]>14         </property>15         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>16         <property name="show_sql">true</property>17         <property name="format_sql">true</property>18         <property name="hbm2ddl.auto">update</property>19         20         <!-- 指定映射文件的路径 -->21         <mapping resource="com/imooc/entity/Grade.hbm.xml" />22         <mapping resource="com/imooc/entity/Student.hbm.xml" />23     </session-factory>24 </hibernate-configuration>
Copier après la connexion
Afficher le code

Écrire un fichier de test pour ajouter, supprimer, modifier et vérifier

 1 package com.imooc.test; 2  3 import java.util.Set; 4  5 import org.hibernate.Session; 6 import org.hibernate.Transaction; 7  8 import com.imooc.entity.Grade; 9 import com.imooc.entity.Student;10 import com.imooc.util.HibernateUtil;11 12 /*13  * 单向一对多关系关系(班级--->学生)14  * 建立关联关系后,可以方便的从一个对象导航到另一个对象15  * 注意关联的方向16  */17 public class Test01 {18 19     public static void main(String[] args) {20         //add();21         //findStudentsByGrade();22         //update();23         delete();24     }25     26     //将学生添加到班级27     public static void add() {28         Grade g = new Grade("Java一班", "Java软件开发一班");29         Student s1 = new Student("杨康", "男");30         Student s2 = new Student("穆念慈", "女");31         32         //如果希望在学生表中添加对应的班级编号,需要在班级中添加学生,建立关联关系33         g.getStudents().add(s1);34         g.getStudents().add(s2);35         36         Session session = HibernateUtil.getSession();37         Transaction tr = session.beginTransaction();38         session.save(g);39         session.save(s1);40         session.save(s2);41         tr.commit();42         HibernateUtil.closeSession(session);43     }44     45     //查询班级中包含的学生46     public static void findStudentsByGrade() {47         Session session = HibernateUtil.getSession();48         Grade grade = (Grade) session.get(Grade.class, 1);49         System.out.println( grade.getGname() + "," + grade.getGdesc() );50         51         Set<Student> students = grade.getStudents();52         for(Student s : students) {53             System.out.println( s.getSname() + "," + s.getSex() );54         }55     }56     57     //修改学生信息58     public static void update() {59         Grade g=new Grade("Java二班", "Java软件开发二班");60         Session session = HibernateUtil.getSession();61         Transaction tr = session.beginTransaction();62         Student s = (Student) session.get(Student.class, 1);63         g.getStudents().add(s);64         session.save(g);65         tr.commit();66         HibernateUtil.closeSession(session);67     }68     69     //删除学生信息70     public static void delete() {71         Session session = HibernateUtil.getSession();72         Transaction tr = session.beginTransaction();73         Student s = (Student) session.get(Student.class, 2);74         session.delete(s);75         tr.commit();76         HibernateUtil.closeSession(session);77     }78 }
Copier après la connexion
Afficher le code


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

Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : résolution des problèmes de requêtes associés courants Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : résolution des problèmes de requêtes associés courants Feb 22, 2024 pm 02:18 PM

Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : Pour résoudre les problèmes de requêtes associés courants, des exemples de code spécifiques sont nécessaires. Dans le travail de développement réel, nous rencontrons souvent des situations dans lesquelles nous devons interroger un objet d'entité maître et ses multiples objets d'entité esclave associés. . Dans MyBatis, la requête un-à-plusieurs est une requête d'association de base de données courante avec une configuration correcte, l'interrogation, l'affichage et le fonctionnement des objets associés peuvent être facilement réalisés. Cet article présentera la méthode de configuration des requêtes un-à-plusieurs dans MyBatis et comment résoudre certains problèmes de requêtes courants associés.

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

Questions d'entretien Java JPA sélectionnées : Testez votre maîtrise du framework de persistance Questions d'entretien Java JPA sélectionnées : Testez votre maîtrise du framework de persistance Feb 19, 2024 pm 09:12 PM

Qu’est-ce que JPA ? En quoi est-ce différent de JDBC ? JPA (JavaPersistence API) est une interface standard pour le mappage objet-relationnel (ORM), qui permet aux développeurs Java d'utiliser des objets Java familiers pour faire fonctionner des bases de données sans écrire de requêtes SQL directement sur la base de données. JDBC (JavaDatabaseConnectivity) est l'API standard de Java pour la connexion aux bases de données. Elle oblige les développeurs à utiliser des instructions SQL pour faire fonctionner la base de données. JPA encapsule JDBC, fournit une API plus pratique et de niveau supérieur pour le mappage objet-relationnel et simplifie les opérations d'accès aux données. Dans JPA, qu’est-ce qu’une entité ? entité

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

Comment associer automatiquement les clés étrangères MySQL et les clés primaires ? Comment associer automatiquement les clés étrangères MySQL et les clés primaires ? Mar 15, 2024 pm 12:54 PM

Comment associer automatiquement les clés étrangères MySQL et les clés primaires ? Dans la base de données MySQL, les clés étrangères et les clés primaires sont des concepts très importants. Elles peuvent nous aider à établir des relations entre différentes tables et à garantir l'intégrité et la cohérence des données. Dans les processus applicatifs réels, il est souvent nécessaire d’associer automatiquement les clés étrangères aux clés primaires correspondantes pour éviter les incohérences des données. Ce qui suit présentera comment implémenter cette fonction à travers des exemples de code spécifiques. Tout d’abord, nous devons créer deux tables, l’une comme table maître et l’autre comme table esclave. Créer dans la table principale

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.

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

En langage C, que sont l'évaluation, la préséance et l'association ? En langage C, que sont l'évaluation, la préséance et l'association ? Sep 03, 2023 pm 09:49 PM

Le compilateur "C" évalue les expressions selon des règles de préséance et d'associativité. Si une expression contient des opérateurs de priorité différente, des règles de préséance sont prises en compte. Ici, 10*2 est évalué en premier car '*' a une priorité plus élevée que '-' et '='. Si les expressions contiennent la même priorité, la règle d'associativité est prise en compte, c'est-à-dire de gauche à droite (ou de droite à gauche). ).

See all articles