Ruhezustand - Zuordnen von Dateien

Objekt- / relationale Zuordnungen werden normalerweise in einem XML-Dokument definiert. Diese Zuordnungsdatei weist Hibernate an, wie die definierte Klasse oder die definierten Klassen den Datenbanktabellen zugeordnet werden sollen.

Obwohl viele Benutzer im Ruhezustand das XML von Hand schreiben, gibt es eine Reihe von Tools zum Generieren des Zuordnungsdokuments. Diese schließen einXDoclet, Middlegen und AndroMDA für die fortgeschrittenen Hibernate-Benutzer.

Betrachten wir unsere zuvor definierte POJO-Klasse, deren Objekte in der im nächsten Abschnitt definierten Tabelle verbleiben.

public class Employee {
   private int id;
   private String firstName; 
   private String lastName;   
   private int salary;  

   public Employee() {}
   
   public Employee(String fname, String lname, int salary) {
      this.firstName = fname;
      this.lastName = lname;
      this.salary = salary;
   }
   
   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() {
      return salary;
   }
   
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}

Zu jedem Objekt, das Sie bereitstellen möchten, gibt es eine Tabelle. Beachten Sie, dass die oben genannten Objekte gespeichert und in der folgenden RDBMS-Tabelle abgerufen werden müssen:

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

Basierend auf den beiden oben genannten Entitäten können wir die folgende Zuordnungsdatei definieren, die Hibernate anweist, wie die definierte Klasse oder die definierten Klassen den Datenbanktabellen zugeordnet werden sollen.

<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping>
   <class name = "Employee" table = "EMPLOYEE">
      
      <meta attribute = "class-description">
         This class contains the employee detail. 
      </meta>
      
      <id name = "id" type = "int" column = "id">
         <generator class="native"/>
      </id>
      
      <property name = "firstName" column = "first_name" type = "string"/>
      <property name = "lastName" column = "last_name" type = "string"/>
      <property name = "salary" column = "salary" type = "int"/>
      
   </class>
</hibernate-mapping>

Sie sollten das Zuordnungsdokument in einer Datei mit dem Format <Klassenname> .hbm.xml speichern. Wir haben unser Zuordnungsdokument in der Datei Employee.hbm.xml gespeichert.

Lassen Sie uns ein wenig Detail über die in der Mapping-Datei verwendeten Mapping-Elemente verstehen -

  • Das Zuordnungsdokument ist ein XML-Dokument mit <hibernate-mapping> als Wurzelelement, das alle enthält <class> Elemente.

  • Das <class>Elemente werden verwendet, um bestimmte Zuordnungen von Java-Klassen zu den Datenbanktabellen zu definieren. Der Java-Klassenname wird mit dem angegebenname Attribut des Klassenelements und der Datenbank table Der Name wird mit dem Tabellenattribut angegeben.

  • Das <meta> element ist ein optionales Element und kann zum Erstellen der Klassenbeschreibung verwendet werden.

  • Das <id>element ordnet das eindeutige ID-Attribut in der Klasse dem Primärschlüssel der Datenbanktabelle zu. Dasname Das Attribut des ID-Elements bezieht sich auf die Eigenschaft in der Klasse und die columnAttribut bezieht sich auf die Spalte in der Datenbanktabelle. Dastype Das Attribut enthält den Zuordnungstyp für den Ruhezustand. Diese Zuordnungstypen werden vom Java- in den SQL-Datentyp konvertiert.

  • Das <generator>Element innerhalb des ID-Elements wird verwendet, um die Primärschlüsselwerte automatisch zu generieren. Dasclass Attribut des Generatorelements wird auf gesetzt native um den Winterschlaf auch aufnehmen zu lassen identity, sequence, oder hilo Algorithmus zum Erstellen eines Primärschlüssels in Abhängigkeit von den Funktionen der zugrunde liegenden Datenbank.

  • Das <property>Element wird verwendet, um eine Java-Klasseneigenschaft einer Spalte in der Datenbanktabelle zuzuordnen. Dasname Das Attribut des Elements bezieht sich auf die Eigenschaft in der Klasse und die columnAttribut bezieht sich auf die Spalte in der Datenbanktabelle. Dastype Das Attribut enthält den Zuordnungstyp für den Ruhezustand. Diese Zuordnungstypen werden vom Java- in den SQL-Datentyp konvertiert.

Es sind andere Attribute und Elemente verfügbar, die in einem Zuordnungsdokument verwendet werden. Ich würde versuchen, so viele wie möglich zu behandeln, während ich andere Themen im Zusammenhang mit dem Ruhezustand diskutiere.