Heim Java javaLernprogramm Hibernate_Association Mapping_one-to-many

Hibernate_Association Mapping_one-to-many

Jun 23, 2017 pm 04:28 PM
hibernate eins zu viele Verein 映射

Hibernate-Mapping-Beziehung

eins-zu-viele, viele-zu-eins, Eins-zu-eins, viele-zu-viele.

Die am häufigsten verwendeten sind Eins-zu-Viele und Viele-zu-Eins.

In der Datenbank können Sie eine Eins-zu-viele-Beziehung ausdrücken, indem Sie Primär- und Fremdschlüsselzuordnungen hinzufügen. Im Ruhezustand enthält eine Partei mehrere Set-Implementierung, d. h. Verwendung des -Elements am „Eins“-Ende, um das Objekt darzustellen, das das „Vielen“-Ende enthält.

Das Folgende implementiert eine „Eins-zu-viele“-Demo des Hinzufügens, Löschens, Änderns und Abfragens: Eine Klasse entspricht mehreren Studenten.

Erstellen Sie zunächst die Schülerklasse Student

 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 }
Nach dem Login kopieren
Code anzeigen

Klassennote erstellen

 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 }
Nach dem Login kopieren
Code anzeigen

Erstellen Sie die Zuordnungsdatei Student.hbm.xml der Student-Klasse

 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>
Nach dem Login kopieren
Code anzeigen

Erstellen Sie die Zuordnungsdatei Grade.hbm.xml der Grade-Klasse

 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>
Nach dem Login kopieren
Code anzeigen

Konfigurationsdatei für den Ruhezustand erstellen

 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>
Nach dem Login kopieren
Code anzeigen

Testdatei zum Hinzufügen, Löschen, Ändern und Überprüfen schreiben

 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 }
Nach dem Login kopieren
Code anzeigen


Das obige ist der detaillierte Inhalt vonHibernate_Association Mapping_one-to-many. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ausführliche Erläuterung der Eins-zu-Viele-Abfragekonfiguration von MyBatis: Lösung häufiger verwandter Abfrageprobleme Ausführliche Erläuterung der Eins-zu-Viele-Abfragekonfiguration von MyBatis: Lösung häufiger verwandter Abfrageprobleme Feb 22, 2024 pm 02:18 PM

Ausführliche Erläuterung der Eins-zu-Viele-Abfragekonfiguration von MyBatis: Um häufig auftretende Abfrageprobleme zu lösen, sind spezifische Codebeispiele erforderlich. Bei der tatsächlichen Entwicklungsarbeit stoßen wir häufig auf Situationen, in denen wir das Hauptentitätsobjekt und die damit verbundenen mehreren Slave-Entitätsobjekte abfragen müssen . In MyBatis ist die Eins-zu-viele-Abfrage eine gängige Datenbankzuordnungsabfrage. Bei korrekter Konfiguration können die Abfrage, Anzeige und Bedienung verknüpfter Objekte problemlos realisiert werden. In diesem Artikel wird die Konfigurationsmethode für Eins-zu-Viele-Abfragen in MyBatis vorgestellt und erläutert, wie einige häufig auftretende Abfrageprobleme gelöst werden

So integrieren Sie Hibernate in ein SpringBoot-Projekt So integrieren Sie Hibernate in ein SpringBoot-Projekt May 18, 2023 am 09:49 AM

Hibernate in das SpringBoot-Projekt integrieren Vorwort Hibernate ist ein beliebtes ORM-Framework (Object Relational Mapping), das Java-Objekte Datenbanktabellen zuordnen kann, um Persistenzvorgänge zu erleichtern. Im SpringBoot-Projekt kann uns die Integration von Hibernate dabei helfen, Datenbankoperationen einfacher durchzuführen. In diesem Artikel wird die Integration von Hibernate in das SpringBoot-Projekt vorgestellt und entsprechende Beispiele bereitgestellt. 1.Abhängigkeiten einführenFügen Sie die folgenden Abhängigkeiten in die Datei pom.xml ein: org.springframework.bootspring-boot-starter-data-jpam

Ausgewählte Java JPA-Interviewfragen: Testen Sie Ihre Beherrschung des Persistenz-Frameworks Ausgewählte Java JPA-Interviewfragen: Testen Sie Ihre Beherrschung des Persistenz-Frameworks Feb 19, 2024 pm 09:12 PM

Was ist JPA? Wie unterscheidet es sich von JDBC? JPA (JavaPersistence API) ist eine Standardschnittstelle für objektrelationales Mapping (ORM), die es Java-Entwicklern ermöglicht, vertraute Java-Objekte zum Betreiben von Datenbanken zu verwenden, ohne SQL-Abfragen direkt in die Datenbank schreiben zu müssen. JDBC (JavaDatabaseConnectivity) ist die Standard-API von Java für die Verbindung mit Datenbanken. Sie erfordert, dass Entwickler SQL-Anweisungen verwenden, um die Datenbank zu betreiben. JPA kapselt JDBC, bietet eine bequemere und übergeordnete API für die objektrelationale Zuordnung und vereinfacht Datenzugriffsvorgänge. Was ist in JPA eine Entität? juristische Person

Java-Fehler: Ruhezustandsfehler, wie man damit umgeht und sie vermeidet Java-Fehler: Ruhezustandsfehler, wie man damit umgeht und sie vermeidet Jun 25, 2023 am 09:09 AM

Java ist eine objektorientierte Programmiersprache, die im Bereich der Softwareentwicklung weit verbreitet ist. Hibernate ist ein beliebtes Java-Persistenz-Framework, das eine einfache und effiziente Möglichkeit bietet, die Persistenz von Java-Objekten zu verwalten. Während des Entwicklungsprozesses treten jedoch häufig Hibernate-Fehler auf, die dazu führen können, dass das Programm abnormal beendet wird oder instabil wird. Der Umgang mit und die Vermeidung von Hibernate-Fehlern ist zu einer Fähigkeit geworden, die Java-Entwickler beherrschen müssen. In diesem Artikel werden einige gängige Hib vorgestellt

Wie ordne ich MySQL-Fremdschlüssel und Primärschlüssel automatisch zu? Wie ordne ich MySQL-Fremdschlüssel und Primärschlüssel automatisch zu? Mar 15, 2024 pm 12:54 PM

Wie ordne ich MySQL-Fremdschlüssel und Primärschlüssel automatisch zu? In der MySQL-Datenbank sind Fremdschlüssel und Primärschlüssel sehr wichtige Konzepte. Sie können uns dabei helfen, Beziehungen zwischen verschiedenen Tabellen herzustellen und die Integrität und Konsistenz der Daten sicherzustellen. In tatsächlichen Anwendungsprozessen ist es häufig erforderlich, Fremdschlüssel automatisch den entsprechenden Primärschlüsseln zuzuordnen, um Dateninkonsistenzen zu vermeiden. Im Folgenden wird anhand spezifischer Codebeispiele erläutert, wie diese Funktion implementiert wird. Zuerst müssen wir zwei Tabellen erstellen, eine als Master-Tabelle und die andere als Slave-Tabelle. In der Haupttabelle erstellen

Was sind die Unterschiede zwischen Hibernate und Mybatis? Was sind die Unterschiede zwischen Hibernate und Mybatis? Jan 03, 2024 pm 03:35 PM

Die Unterschiede zwischen Hibernate und Mybatis: 1. Implementierungsmethode; 3. Vergleich der Objektverwaltung; Detaillierte Einführung: 1. Implementierungsmethode: Hibernate ist eine vollständige Objekt-/Relational-Mapping-Lösung, die Objekte Datenbanktabellen zuordnet, während MyBatis von Entwicklern das manuelle Schreiben von SQL-Anweisungen und ResultMap erfordert. 2. Leistung: Hibernate ist in Bezug auf die Entwicklungsgeschwindigkeit schneller MyBatis, weil Hibernate die DAO-Ebene usw. vereinfacht.

Was ist die Zuordnungsmethode für Eins-zu-Viele- und Viele-zu-Viele-Beziehungen in Java Hibernate? Was ist die Zuordnungsmethode für Eins-zu-Viele- und Viele-zu-Viele-Beziehungen in Java Hibernate? May 27, 2023 pm 05:06 PM

Hibernate ist ein hervorragendes ORM-Framework, das den Datenzugriff zwischen Java-Anwendungen und relationalen Datenbanken vereinfacht. In Hibernate können wir Eins-zu-Viele- und Viele-zu-Viele-Beziehungen verwenden, um komplexe Datenmodelle zu verarbeiten. Die Eins-zu-Viele-Beziehung von Hibernate In Hibernate bedeutet eine Eins-zu-Viele-Beziehung, dass eine Entitätsklasse mehreren anderen Entitätsklassen entspricht. Beispielsweise kann eine Bestellung mehreren Bestellpositionen (OrderItem) entsprechen, und ein Benutzer (User) kann mehreren Bestellungen (Order) entsprechen. Um eine Eins-zu-Viele-Beziehung in Hibernate zu implementieren, müssen Sie in der zu speichernden Entitätsklasse ein Sammlungsattribut definieren

Was sind in der Sprache C Evaluation, Precedence und Association? Was sind in der Sprache C Evaluation, Precedence und Association? Sep 03, 2023 pm 09:49 PM

Der „C“-Compiler wertet Ausdrücke nach Prioritäts- und Assoziativitätsregeln aus. Wenn ein Ausdruck Operatoren unterschiedlicher Priorität enthält, werden Prioritätsregeln berücksichtigt. Hier wird 10*2 zuerst ausgewertet, da „*“ eine höhere Priorität hat als „-“ und „=“. Wenn die Ausdrücke die gleiche Priorität haben, wird die Assoziativitätsregel berücksichtigt, d. h. von links nach rechts (oder von rechts nach links). ).

See all articles