Satz
Ein Sammelsatz ist eine Java -Sammlung, die keine doppelten Elemente enthält. Formell wird Set keine Elemente auf E1 und E2 enthalten, so dass E1.equals (E2) und höchstens ein leeres Element. Daher müssen zu einer Reihe von Objekten hinzugefügt werden, dass Equals () und HashCode () Methoden implementieren, damit Java feststellen kann, ob zwei Elemente/Objekte gleich sind.
Die Sets werden in der Kartentabelle auf <Set> Elemente zugeordnet und in java.util.hashset initialisiert. Sie können festgelegte Sammlungen verwenden, um Elemente in der Sammlung zu haben, die bei der Verwendung der Klasse nicht wiederholt werden müssen.
Definieren Sie die RDBMS -Tabelle:
Betrachten Sie einen Fall, in dem wir unsere Mitarbeiterunterlagen in der Mitarbeitertabelle mit der folgenden Struktur gespeichert werden sollen:
table -Mitarbeiter erstellen (ID int nicht null auto_increment, First_name varchar (20) Standardnull, last_name varchar (20) Standardnull, Gehalt int Standard Null, Primärschlüssel (ID));
Darüber hinaus wird angenommen, dass jeder Mitarbeiter ein oder mehrere Zertifikate mit ihm/ihr haben kann. Daher speichern wir die relevanten Informationen des Zertifikats in einer separaten Tabelle mit der folgenden Struktur:
Tabellenzertifikat erstellen (ID int nicht null auto_increment, Certificate_name varchar (30) Standardnull, Mitarbeiter_id int Standard Null, Primärschlüssel (ID));
Es wird eine Beziehung zwischen einem to-viele-Mitarbeiter und einem Zertifikatobjekt geben:
Definieren Sie die Pojo -Klasse:
Lassen Sie uns unsere Mitarbeiter der Pojo -Klassen implementieren, um eine Sammlung von Objekten in der Mitarbeitertabelle und in Anmeldeinformationen festzuhalten.
Import Java.util.*; Angestellte der öffentlichen Klasse {private int id; private String FirstName; private Zeichenfolge Lastname; privates Int -Gehalt; private Set -Zertifikate; public Employee () {} public Employee (String fname, String lName, int -Gehalt) {this.firstname = fname; this.lastName = lname; this.Salary = Gehalt; } public int getid () {return id; } public void setId (int id) {this.id = id; } public String getFirstName () {return firstname; } public void setfirstname (String first_name) {this.firstname = first_name; } public String getLastName () {return LastName; } public void setLastName (String last_name) {this.lastName = last_name; } public int getSalary () {Rückgabegehalt; } public void setSalary (Int -Gehalt) {this.Salary = Gehalt; } public set getCertificates () {Rückgabezertifikate; } public void setCertificates (Set Certificate) {this.certificates = Certificate; }} Definieren wir nun das Zertifikat einer anderen Pojo -Klasse, die der Tabelle entspricht, ein solches Zertifikatobjekt kann die Zertifikatstabelle speichern und abrufen. Diese Klasse sollte auch die Methoden Equals () und HashCode () gleichzeitig implementieren, damit Java feststellen kann, ob zwei Elemente/Objekte gleich sind.
öffentliche Klassenzertifikat {private int id; privater Zeichenfolge Name; public Certificate () {} öffentliches Zertifikat (Zeichenfolge Name) {this.name = name; } public int getid () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public boolean gleich (Objekt obj) {if (obj == null) return false; if (! this.getClass (). Equals (obj.getClass ()) return false; Zertifikat obj2 = (Zertifikat) obj; if ((this.id == obj2.getId ()) && (this.name.equals (obj2.getName ()))) {return true; } return false; } public int HashCode () {int tmp = 0; tmp = (id + name) .hashCode (); TMP zurückgeben; }} Definieren Sie die Hibernate -Mapping -Datei:
Lassen Sie uns eine Zuordnungsdatei entwickeln, in der angibt, wie Hibernate eine Zuordnungsdatei definiert, die in eine Datenbanktabelle ordnet. Das <Set> -Element wird verwendet, um die Regeln zu definieren, die zur Festlegung der Sammlung verwendet werden.
<? Tabelle = "Mitarbeiter"> <meta Attribute = "Klasse-De-Scription"> Diese Klasse enthält das Detail der Mitarbeiter. </meta> <id name = "id" type = "int" column = "id"> <generator/> </id> <set name = "Zertifikate" CASCADE = "All"> <key column = "Employee_id"/> <Eins-zu-Many/> </set> <Property Name "FirstName" columnname "Lastname" type "type". type = "String"/> <Eigenschaft name = "Gehalt" column = "salary" type = "int"/> </class> <class name = "zertifikat" table = "zertifikat"> <meta attribute = "class-description"> Diese Klasse enthält die Zertifikatsätze. </meta> <id name = "id" type = "int" column = "id"> <generator/> </id> <Eigenschaft name = "name" conal
Das Format <SclassName> .hbm.xml in der Zuordnungsdatei, die gespeichert werden sollte. Speichern Sie die Datei Employee.hbm.xml in der Zuordnungsdatei. Bereits mit den meisten Zuordnungsdetails vertraut und alle Elemente in der Datei zugeordnet:
Ein zugeordnetes Dokument ist ein XML-Dokument mit <Hibernate-Mapping> als Stammelement, das jeder Klasse mit 2 <klassen> Elementen entspricht.
Mit dem <klasse> -Element wird eine Datenbanktabelle spezifische Zuordnung aus einer Java -Klasse definiert. Java -Klasse -Name gibt das Namensattribut des Klassenelements an und der Name der Tabellenattributdatenbank -Tabelle gibt an.
Das Element <Meta> ist ein optionales Element, mit dem eine Beschreibung der Klasse erstellt werden kann.
Das Element <D> Element ordnet das eindeutige ID -Attribut in der Klasse in die Primärschlüssel der Datenbanktabelle ab. Das Namensattribut des ID -Elements bezieht sich auf die Klasse des Attributs, und das Spaltenattribut bezieht sich auf die Spalten in der Datenbanktabelle. Das Typ -Attribut speichert den Hibernate -Mapping -Typ, der von Java in SQL -Datentyp konvertiert wird.
Das Element <Gergenator> innerhalb des ID -Elements wird verwendet, um den Primärschlüsselwert automatisch zu generieren. Legen Sie das Klassenattribut des generierten Elements auf das Original ein, um den Winterschlaf zu erhalten, entweder Identität, Sequenz oder Hilo -Algorithmus, um Primärschlüssel gemäß den Unterstützungsfunktionen der zugrunde liegenden Datenbank zu erstellen.
Das Element <Seigenschaft> wird verwendet, um Eigenschaften einer Java -Klasse in Spalten in einer Datenbanktabelle zuzuordnen. Das Namensattribut eines Elements bezieht sich auf die Klasse des Attributs, und das Spaltenattribut bezieht sich auf die Spalten in der Datenbanktabelle. Das Typ -Attribut speichert den Hibernate -Mapping -Typ, der von Java in SQL -Datentyp konvertiert wird.
Das Element <Set> ist neu und wurde eingeführt, um die Beziehung zwischen Zertifikat und Mitarbeiterklasse festzulegen. Wir verwenden das Element <Set> im Cascade -Attribut, um Hibernate zu sagen, dass das Zertifikatobjekt und das Mitarbeiterobjekt speichern sollen. Das Namensattribut wird so eingestellt, dass die Variable in der Definition in der übergeordneten Klasse festgelegt wird. In unserem Fall handelt es sich um Zertifikat. Für jeden Satz von Variablen müssen wir einen separaten Satz von Elementen in der Zuordnungsdatei definieren.
Das Element <Key> ist das übergeordnete Objekt, das einen Fremdschlüssel enthält, dh der Spalte in der Zertifikatentabelle. Tabelle Mitarbeiter.
Das Element <Eins-zu-Many> zeigt an, dass ein Mitarbeiterobjekt viele Zertifikate umfasst, und daher muss das Zertifikatobjekt mit dem übergeordneten Mitarbeiter in Verbindung gebracht werden. Sie können nach Bedarf alle und <eintunen-, <viel-zu-Eins-Elemente <Bough-One> oder <Bough-to-Many> -Elemente verwenden.
Erstellen Sie eine Anwendungsklasse:
Schließlich erstellen wir die main () -Methode der Anwendungsklasse, um die Anwendung auszuführen. Wir werden diese App verwenden, um einige Mitarbeiterdatensätze zusammen mit den Anmeldeinformationen zu speichern, und beantragen dann Aufzeichnungen über die CRUD -Operation.
import Java.util.*; import org.hibernate.hibernateException; import org.hibernate.session; import org.hibernate.transaction; import org.hibernate.sessionFactory; import org.hibernate.cfg.Configuration; öffentliche Klasse Managing Employeee {private statische Sitzungsfabrik; public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory (); } catch (throwable ex) {System.err.println ("SessionFactory -Objekt nicht erstellt." + ex); Neue ExecessIninitializerError (Ex) werfen; } ManagyeAmee me = new ManageAmployee (); / * Lassen Sie uns eine Reihe von Zertifikaten für den ersten Mitarbeiter haben */ Hashset set1 = new Hashset (); set1.add (neues Zertifikat ("MCA")); set1.add (neues Zertifikat ("MBA")); set1.add (neues Zertifikat ("MBA")); set1.add (neues Zertifikat ("PMP")); / * Fügen Sie Mitarbeiterdatensätze in der Datenbank hinzu */ Integer empID1 = me.addEmPl ("Manoj", "Kumar", 4000, set1); / * Ein weiterer Satz von Zertifikaten für den zweiten Mitarbeiter */ Hashset set2 = new Hashset (); set2.add (neues Zertifikat ("BCA")); set2.add (neues Zertifikat ("BA")); / * Fügen Sie in der Datenbank einen weiteren Mitarbeiterdatensatz hinzu */ Integer empid2 = me.addEmPl ("Dilip", "Kumar", 3000, set2); / * Auflisten Sie alle Mitarbeiter auf */ me.listOplomee (); / * Aktualisieren Sie die Gehaltsunterlagen des Mitarbeiters */ me.updateOper (empid1, 5000); / * Einen Mitarbeiter aus der Datenbank löschen */ me.deleteEMple (empid2); / * Auflisten Sie alle Mitarbeiter auf */ me.listOplomee (); } / * Methode zum Hinzufügen eines Mitarbeiterdatensatzes in der Datenbank * / public Integer addPelyee (String fname, String lName, int -Gehalt, Set cert) {Session Session = factory.openSession (); Transaktion TX = NULL; Integer EmployeeId = NULL; try {tx = session.beginTransaction (); Mitarbeitermitarbeiter Mitarbeiter = neuer Mitarbeiter (fname, lname, Gehalt); Mitarbeiter.SetCertificates (cert); EmployeEID = (Integer) Sitzung.Save (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); } Return EmployeEID; } / * Methode zur Auflistung aller Mitarbeiterdetails * / public void ListOmPlumes () {Session Session = Factory.OpenSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); List Employees = Session.createquery ("From Employee"). List (); für (Iterator iterator1 = Mitarbeiter System.out.print ("Vorname:" + Mitarbeiter.getFirstname ()); System.out.print ("Nachname:" + Mitarbeiter.getLastName ()); System.out.println ("Gehalt:" + Mitarbeiter.getSalary ()); Setzen Sie Zertifikate = Mitarbeiter.getCertificates (); für (iterator iterator2 = Certificate.Iderator (); iterator2.hasnext ();) {Zertifikat certname = (Zertifikat) iterator2.Next (); System.out.println ("Zertifikat:" + certname.getName ()); }} tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }} / * Methode zur Aktualisierung des Gehalts für einen Mitarbeiter * / public void updatePoperee (Integer EmployeeId, Int -Gehalt) {Session Session = Factory.OpenSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); Arbeitnehmermitarbeiter Mitarbeiter = (Mitarbeiter) Sitzung.get (Mitarbeiter.Class, EmployeeId); Mitarbeiter.SetSalary (Gehalt); Sitzung.Update (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }} / * Methode zum Löschen eines Mitarbeiters aus den Datensätzen * / public void DeletePoepoMeee (Integer EmployeeID) {session session = factory.openSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); Arbeitnehmermitarbeiter Mitarbeiter = (Mitarbeiter) Sitzung.get (Mitarbeiter.Class, EmployeeId); Sitzung.Delete (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }}} Kompilieren und ausführen:
Hier sind die Schritte zum Kompilieren und Ausführen der obigen Anwendung. Stellen Sie sicher, dass dieser Pfad und der Klassenpfad vor dem Zusammenstellen und Ausführen entsprechend eingestellt sind.
Die folgenden Ergebnisse werden auf dem Bildschirm erzielt und Datensätze in den Arbeitnehmer- und Zertifikatstabellen erstellt.
$ java verwaltete Menschenschaft
..... Verschiedene Protokollnachrichten werden hier angezeigt ......... Vorname: Manoj Nachname: Kumar Gehalt: 4000Certificat: mbactificate: pmpCertificate: McAfirst Name: Dilip Nachname: Kumar Gehalt: 3000Certificate: Bcactificate: Bafirst Name: Manoj Lastname: Kumar -Lastname: 5000Certificate: mbactificate: mbactificate: kumar kumar
Wenn Sie den Mitarbeiter- und Zertifikatformular überprüfen, sollten Sie es aufzeichnen:
MySQL> SELECT * vom Mitarbeiter;
+----------------------------+----------+| id | First_Name | last_name | Gehalt |+--------------------------------+------------+-----------+| 1 | Manoj | Kumar | 5000 |+--------------------------------+----------+1 Zeile in Set (0,00 Sek.)
MySQL> aus Zertifikat auswählen;
+----+------------------+-------------+| id | Certificate_Name | Employee_id |+----+------------------+--------------+| 1 | Mba | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+----+------------------+--------------+3 Zeilen in Set (0,00 Sek.)
MySQL>
Sortiert
SortEdSet ist eine Java -Sammlung, die keine doppelten Elemente und Elemente enthält, die ihre natürliche Reihenfolge anbieten oder nach einem Komparator sortiert werden.
Eine sortierte Karte, die in der Mapping -Tabelle <Set> Element und java.util.Treeset initialisiert wurde. Das Sortierattribut kann auf einen Komparator oder eine natürliche Reihenfolge eingestellt werden. Wenn natürliche Reihenfolge verwendet wird, durchquert der Iterator die in aufsteigenden Reihenfolge angeordneten festgelegten Elemente.
Wir verwenden weiterhin die im obige Beispiel definierte RDBMS -Tabelle, und es wird eine Beziehung zwischen mehreren Mitarbeitern und Zertifikatobjekten bestehen, und die Pojo -Klasse ist auch oben definiert.
Implementieren wir den Mitarbeiter der Pojo -Klasse werden verwendet, um eine Sammlung von Objekten in der Mitarbeitertabelle und eine zertifizierte Sortenset -Variable zu halten.
Definieren wir nun das Zertifikat für eine andere Pojo -Klasse, die der Zertifikatstabelle entspricht, ein solches Zertifikatobjekt kann die Zertifikatstabelle speichern und abrufen. Diese Klasse sollte auch die vergleichbare Schnittstelle implementieren, und die Vergleichsmethode wird verwendet, um Sort = "Natural" im Fall von Mapping -Dateien festzulegen (siehe Kartendateien unten), die Elemente werden sortiert.
Public Class Certificate implementiert vergleichbar <Zertifikat> {private int id; privater Zeichenfolge Name; public Certificate () {} öffentliches Zertifikat (Zeichenfolge Name) {this.name = name; } public int getid () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int vergleicheto (Zertifikat, dass) {endgültig int vor = -1; endgültig int nach = 1; if (that == null) {return vor; } Vergleichbar thiscertificate = this.getName (); Vergleichbar thatcertificate = that.getName (); if (thiscertificate == null) {return danach; } else if (thatcertificate == null) {return vor; } else {return Thiscertificate.comPareto (thatcertificate); }}} Definieren Sie die Hibernate -Mapping -Datei:
Lassen Sie uns eine Zuordnungsdatei entwickeln, in der angibt, wie Hibernate eine Zuordnungsdatei definiert, die in eine Datenbanktabelle ordnet. Das <Set> -Element wird verwendet, um die Regeln für die verwendete Sammlung sortiert zu definieren.
<? Tabelle = "Mitarbeiter"> <meta Attribute = "Klasse-De-Scription"> Diese Klasse enthält das Detail der Mitarbeiter. </meta> <id name = "id" type = "int" column = "id"> <generator/> </id> <set name = "Zertifikate" CASCADE = "All" sort = "myclass"> <key column = "Employee_id"/> <Eins-zu-Many/> </set> <Eigentum name = "durtname" columnname "erstname =" erstname "type" type "=" column = "last_name" type = "string"/> <Eigenschaft name = "salary" column = "salary" type = "int"/> </class> <class name = "zertifikat" table = "zertifikat"> <meta sattribute = "class-description"> Diese Klasse enthält die Zertifikatsdatensätze. </meta> <id name = "id" type = "int" column = "id"> <generator/> </id> <Eigenschaft name = "name" conal
Das Format <sclassName> .hbm.xml speichern in der Kartendatei die Datei Mitarbeiter.hbm.xml in der Karte -Datei. Ich war bereits mit den meisten Mapping -Details vertraut, aber lassen Sie uns alle Elemente in der Mapping -Datei ansehen:
Ein zugeordnetes Dokument ist ein XML-Dokument mit <Hibernate-Mapping> als Stammelement, das jeder Klasse mit 2 <klassen> Elementen entspricht.
Mit dem <klasse> -Element wird eine Datenbanktabelle spezifische Zuordnung aus einer Java -Klasse definiert. Java -Klasse -Name gibt das Namensattribut des Klassenelements an und der Name der Tabellenattributdatenbank -Tabelle gibt an.
Das Element <Meta> ist ein optionales Element, mit dem eine Beschreibung der Klasse erstellt werden kann.
Das Element <D> Element ordnet das eindeutige ID -Attribut in der Klasse in die Primärschlüssel der Datenbanktabelle ab. Das Namensattribut des ID -Elements bezieht sich auf die Klasse des Attributs, und das Spaltenattribut bezieht sich auf die Spalten in der Datenbanktabelle. Das Typ -Attribut speichert den Hibernate -Mapping -Typ, der von Java in SQL -Datentyp konvertiert wird.
Das Element <Gergenator> innerhalb des ID -Elements wird verwendet, um den Primärschlüsselwert automatisch zu generieren. Legen Sie das Klassenattribut des generierten Elements fest, um den Hibernate den Algorithmus entweder in Identität, Sequenz oder Hilo nativ zu ermöglichen, um Primärschlüssel gemäß den Unterstützungsfunktionen der zugrunde liegenden Datenbank zu erstellen.
Das Element <Seigenschaft> wird verwendet, um Eigenschaften einer Java -Klasse in Spalten in einer Datenbanktabelle zuzuordnen. Das Namensattribut eines Elements bezieht sich auf die Klasse des Attributs, und das Spaltenattribut bezieht sich auf die Spalten in der Datenbanktabelle. Das Typ -Attribut speichert den Hibernate -Mapping -Typ, der von Java in SQL -Datentyp konvertiert wird.
Das <Set> -Element wird verwendet, um die Beziehung zwischen dem Zertifikat und der Mitarbeiterklasse festzulegen. Wir verwenden das Element <Set> im Cascade -Attribut, um Hibernate zu sagen, dass er das Zertifikatobjekt und auch dem Mitarbeiterobjekt speichern soll. Das Namensattribut wird auf die Variable des in der übergeordneten Klasse definierten SortEDSet festgelegt. In unserem Fall handelt es sich um ein Zertifikat. Die Sortiereigenschaft kann auf natürliche Sortierung eingestellt werden oder auf benutzerdefinierte Klassenimplementierung als java.util.com -Parator eingestellt werden. Wir haben eine Klassenmyklasse verwendet, die sie als java.util.comParator implementiert, um die Sortierreihenfolge der Implementierung der Zertifikatklasse umzukehren.
Das Element <Key> ist das übergeordnete Objekt, das einen Fremdschlüssel enthält, dh der Spalte in der Zertifikatentabelle. Tabelle Mitarbeiter.
Das Element <Eins-zu-Many> zeigt an, dass ein Mitarbeiterobjekt viele Zertifikatobjekte umfasst, und daher muss das Zertifikatobjekt mit dem übergeordneten Mitarbeiter in Verbindung gebracht werden. Sie können nach Bedarf alle und <eintunen-, <viel-zu-Eins-Elemente <Bough-One> oder <Bough-to-Many> -Elemente verwenden.
Wenn Sie die Einstellung "Sort =" Natural "verwenden, müssen Sie keine separate Klasse erstellen, da die Zertifikatklasse die vergleichbare Schnittstelle implementiert hat, und der Hibernate verwendet den Vergleich (definiert als Vergleichszertifikatname in der Zertifikatklasse). Wir verwenden jedoch eine maßgeschneiderte Myclass der Komparatorklasse in unserer Zuordnungsdatei, daher müssen wir diese Klasse basierend auf dem Sortieralgorithmus erstellen. Verwenden Sie diese Klasse, um in absteigender Reihenfolge zu sortieren.
Java.util.comParator importieren; MyClass implementiert public class implementiert vergleicher <zertifikat> {public int compare (Zertifikat O1, Zertifikat O2) {endgültig int vor = -1; endgültig int nach = 1; / * Um die Sortierreihenfolge umzukehren, mehrere x -1 */ if (o2 == null) {return vor * -1; } Vergleichbar thiscertificate = o1.getName (); Vergleichbar thatcertificate = o2.getName (); if (thiscertificate == null) {return nach * 1; } else if (thatcertificate == null) {return vor * -1; } else {return Thiscertificate.comPareto (thatcertificate) * -1; }}} Erstellen Sie eine Anwendungsklasse:
Schließlich erstellen wir die main () -Methode der Anwendungsklasse, um die Anwendung auszuführen. Wir werden diese App verwenden, um einige Mitarbeiteraufzeichnungen zusammen mit dem Zertifikat zu speichern, und beantragen dann Aufzeichnungen über die CRUD -Operation.
import Java.util.*; import org.hibernate.hibernateException; import org.hibernate.session; import org.hibernate.transaction; import org.hibernate.sessionFactory; import org.hibernate.cfg.Configuration; öffentliche Klasse Managing Employeee {private statische Sitzungsfabrik; public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory (); } catch (throwable ex) {System.err.println ("SessionFactory -Objekt nicht erstellt." + ex); Neue ExecessIninitializerError (Ex) werfen; } ManagyeAmee me = new ManageAmployee (); / * Lassen Sie uns eine Reihe von Zertifikaten für den ersten Mitarbeiter haben */ treeset set1 = new treeset (); set1.add (neues Zertifikat ("MCA")); set1.add (neues Zertifikat ("MBA")); set1.add (neues Zertifikat ("MBA")); set1.add (neues Zertifikat ("PMP")); / * Fügen Sie Mitarbeiterdatensätze in der Datenbank hinzu */ Integer empID1 = me.addEmPl ("Manoj", "Kumar", 4000, set1); / * Ein weiterer Satz von Zertifikaten für den zweiten Mitarbeiter */ Treeset set2 = new treeset (); set2.add (neues Zertifikat ("BCA")); set2.add (neues Zertifikat ("BA")); / * Fügen Sie in der Datenbank einen weiteren Mitarbeiterdatensatz hinzu */ Integer empid2 = me.addEmPl ("Dilip", "Kumar", 3000, set2); / * Auflisten Sie alle Mitarbeiter auf */ me.listOplomee (); / * Aktualisieren Sie die Gehaltsunterlagen des Mitarbeiters */ me.updateOper (empid1, 5000); / * Einen Mitarbeiter aus der Datenbank löschen */ me.deleteEMple (empid2); / * Auflisten Sie alle Mitarbeiter auf */ me.listOplomee (); } / * Methode zum Hinzufügen eines Mitarbeiterdatensatzes in der Datenbank * / public Integer addPlEYPOTOPLE (String fname, String lName, int -Gehalt, SortEdSet Cert) {session session = factory.openSession (); Transaktion TX = NULL; Integer EmployeeId = NULL; try {tx = session.beginTransaction (); Mitarbeitermitarbeiter Mitarbeiter = neuer Mitarbeiter (fname, lname, Gehalt); Mitarbeiter.SetCertificates (cert); EmployeEID = (Integer) Sitzung.Save (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); } Return EmployeEID; } / * Methode zur Auflistung aller Mitarbeiterdetails * / public void ListOmPlumes () {Session Session = Factory.OpenSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); List Employees = Session.createquery ("From Employee"). List (); für (Iterator iterator1 = Mitarbeiter System.out.print ("Vorname:" + Mitarbeiter.getFirstname ()); System.out.print ("Nachname:" + Mitarbeiter.getLastName ()); System.out.println ("Gehalt:" + Mitarbeiter.getSalary ()); SortEdSet Certificate = Mitarbeiter.getCertificates (); für (iterator iterator2 = Certificate.Iderator (); iterator2.hasnext ();) {Zertifikat certname = (Zertifikat) iterator2.Next (); System.out.println ("Zertifikat:" + certname.getName ()); }} tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }} / * Methode zur Aktualisierung des Gehalts für einen Mitarbeiter * / public void updatePoperee (Integer EmployeeId, Int -Gehalt) {Session Session = Factory.OpenSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); Arbeitnehmermitarbeiter Mitarbeiter = (Mitarbeiter) Sitzung.get (Mitarbeiter.Class, EmployeeId); Mitarbeiter.SetSalary (Gehalt); Sitzung.Update (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }} / * Methode zum Löschen eines Mitarbeiters aus den Datensätzen * / public void DeletePoepoMeee (Integer EmployeeID) {session session = factory.openSession (); Transaktion TX = NULL; try {tx = session.beginTransaction (); Arbeitnehmermitarbeiter Mitarbeiter = (Mitarbeiter) Sitzung.get (Mitarbeiter.Class, EmployeeId); Sitzung.Delete (Mitarbeiter); tx.commit (); } catch (hibernateException e) {if (tx! = null) tx.rollback (); E. printstacktrace (); } endlich {Session.close (); }}}Nach dem Kompilieren und Ausführen werden die folgenden Ergebnisse auf dem Bildschirm erzielt und Datensätze sowohl im Mitarbeiter- als auch im Zertifikatstabellen erstellt. Sie können sehen, dass die Zertifikate in der entgegengesetzten Reihenfolge sortiert wurden. Sie können es versuchen, indem Sie die Zuordnungsdatei ändern, einfach Sort = "Natural" festlegen und das Programm ausführen und die Ergebnisse vergleichen.
$ java verwaltete Menschenschaft
..... Verschiedene Protokollnachrichten werden hier angezeigt ......... Vorname: Manoj Nachname: Kumar Gehalt: 4000Certificate: pmpCertificate: McAcertificate: Mbafirst Name: Dilip Nachname: Kumar Gehalt: 3000Certificate: Bcactificate: McActificate: McActificate: Kumar -Lastname: Kumar -Gehalt.
Wenn Sie den Mitarbeiter- und Zertifikatformular überprüfen, sollten Sie es aufzeichnen:
MySQL> SELECT * vom Mitarbeiter;
+----------------------------+----------+| id | First_Name | last_name | Gehalt |+--------------------------------+------------+-----------+| 1 | Manoj | Kumar | 5000 |+--------------------------------+----------+1 Zeile in Set (0,00 Sek.)
MySQL> aus Zertifikat auswählen;
+----+------------------+-------------+| id | Certificate_Name | Employee_id |+----+------------------+--------------+| 1 | Mba | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+----+------------------+--------------+3 Zeilen in Set (0,00 Sek.)