JPA - ORM-Komponenten


Advertisements


Die meisten zeitgenössischen Anwendungen verwendung relationalen Datenbank, um Daten zu speichern. Kürzlich, viele Anbieter wechselten zu Datenbank-Objekt, um ihre Belastung für die Datenpflege zu reduzieren. Es bedeutet, Objektdatenbank oder Objekt relationalen Technologien kümmern sich um Speichern, Abrufen, Aktualisieren und Pflege der Daten. Das Kernstück dieser objekt relationale Technologie ist mapping orm.xml-Dateien. Als XML nicht benötigen, können Zusammenstellung wir leicht Änderungen an mehreren Datenquellen machen mit weniger Administration.

Object Relational Mapping

Object Relational Mapping (ORM) kurz informiert Sie über das, was ORM und wie es funktioniert. ORM ist eine Programmier Fähigkeit zu umzuwandeln Daten aus Objekttyp auf relationale Typ und umgekehrt.

Das Hauptmerkmal der ORM ist Mapping oder verbindlich ein Objekt, um seine Daten in der Datenbank. Während Mapping, haben wir, um die Daten, die Art der Daten und ihre Beziehungen zu Selbst Einrichtung oder Einrichtungen in einem anderen Tisch zu betrachten.

Erweiterte Funktionen

  • Idiomatic Persistenz : Es ermöglicht Ihnen, die Persistenz-Klassen unter Verwendung objektorientierten Klassen schreiben

  • High Performance : Es hat viele Abholentechniken und hoffnungsSperrTechniken.

  • Zuverlässige : Es ist sehr stabil und wird von vielen professionellen Programmierern.

ORM Architektur

Die ORM-Architektur Aussehen wie folgt.

Object Relational Mapping

Die obige Architektur erklärt, wie Objektdaten in relationale Datenbank in drei Phasen gespeichert.

Phase1

Die erste Phase, Namens als die Objektdatenphase , enthält POJO Klassen, Service-Schnittstellen und-Klassen. Es ist der Haupt Business-Komponente Schicht, welche hat Business-Logik-Operationen und Attribute.

Zum Beispiel, lassen Sie uns nehmen eine Mitarbeiter Datenbank als schema.

  • Mitarbeiter POJO-Klasse enthält Attribute wie ID, Name, Gehalt, und die Bezeichnung. Es enthält auch Methoden wie Setter und Getter dieser Attribute.

  • Mitarbeiter DAO / Service-Klassen enthalten Service Methoden wie beispielsweise erstellen Mitarbeiter, finden Mitarbeiter, und löschen Mitarbeiter.

Phase 2

Die zweite Phase,Namen als Mapping oder Persistenz Phase , enthält JPA-Provider, Mapping-Datei (ORM.xml), JPA-Loader, und Object Grid.

  • JPA Provider : Es ist das Produkt eines anderen Lieferanten, die die JPA Aroma (javax.persistence) enthält. Zum Beispiel Eclipselink, Toplink, Hibernate, etc.

  • Mapping-Datei : Die Mapping-Datei (ORM.xml) enthält Mapping-Konfiguration, Zwischen daten in einer POJO Klasse und Daten in einer relationalen Datenbank.

  • JPA Loader : Die JPA-Loader Werke wie ein Cache-Speicher. Es kann die relationale Gitterdaten zu laden. Es funktioniert wie eine Kopie der Datenbank, zu interagieren mit Service-Klassen für POJO Daten (Attribute POJO-Klasse).

  • Objekt Grid : Es ist ein temporäres Verzeichnis, die eine Kopie von relationalen Daten wie ein Cache-Speicher speichern kann. Alle Abfragen der Datenbank zuerst auf die Daten in der Objektgitter erfolgt. Erst, nachdem es begangen wird, wirkt sich die Hauptdatenbank.

Phase 3

Die dritte Phase ist die relationalen Datenphase . Es enthält die relationalen Daten, die logisch auf die Geschäftskomponente verbunden ist. Wie oben erläutert, nur wenn die Geschäftskomponente die Daten fest, in die Datenbank physikalisch gespeichert ist. Bis dahin wird die modifizierten Daten in einem Cache-Speicher als ein Rasterformat gespeichert. Das Verfahren der Gewinnung der Daten ist identisch mit der Speicherung der Daten.

Der Mechanismus der programmatische Interaktion von über drei Phasen wird als Bezeichnung Object Relational Mapping.

Mapping.xml

Die mapping.xml Datei ist, um die JPA-Anbieter, die Entity-Klassen mit den Datenbanktabellen Karte anweisen.

Lassen Sie uns Nehmen wir ein Beispiel der Employee-Entität, die vier Attribute enthält. Die POJO Klasse von Employee-Entität mit dem Namen Employee.java ist wie folgt:

public class Employee 
{
   private int eid;
   private String ename;
   private double salary;
   private String deg;
   public Employee(int eid, String ename, double salary, String deg) 
   {
      super( );
      this.eid = eid;
      this.ename = ename;
      this.salary = salary;
      this.deg = deg;
   }

   public Employee( ) 
   {
      super();
   }

   public int getEid( ) 
   {
      return eid;
   }
   public void setEid(int eid)  
   {
      this.eid = eid;
   }
   public String getEname( ) 
   {
      return ename;
   }
   public void setEname(String ename) 
   {
      this.ename = ename;
   }

   public double getSalary( ) 
   {
      return salary;
   }
   public void setSalary(double salary) 
   {
      this.salary = salary;
   }

   public String getDeg( ) 
   {
      return deg;
   }
   public void setDeg(String deg) 
   {
      this.deg = deg;
   }
}

Der obige Code ist der Employee-Entität POJO Klasse. Es enthält vier Attribute eid , ename , Gehalt und deg . Betrachten Sie diese Attribute als der Tabellenfelder in einer Tabelle und eid als Primärschlüssel dieser Tabelle. Jetzt haben wir, um die Mapping-Datei für den Ruhe es zu entwerfen. Die Mapping-Datei mit dem Namen mapping.xml ist wie folgt:

<? xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="https://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://java.sun.com/xml/ns/persistence/orm    
                        https://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
                        version="1.0">
    <description> XML Mapping file</description>
    <entity class="Employee">        
        <table name="EMPLOYEETABLE"/>
        <attributes>
            <id name="eid">
                <generated-value strategy="TABLE"/>
            </id>
            <basic name="ename">
                <column name="EMP_NAME" length="100"/>
            </basic>
            <basic name="salary">
            </basic>
            <basic name="deg">
            </basic>
        </attributes>
    </entity>
</entity-mappings>

Das obige Skript wird zur Abbildung der Entity-Klasse mit der Datenbanktabelle verwendet. In dieser Datei

  • <Entity-Zuordnungen> : Tag definiert das Schema Definition Einheit-Tags in XML-Datei erlauben

  • <Beschreibung> : Tag enthält eine Beschreibung über Anwendung.

  • <Entität> : Tag definiert die Entity-Klasse, die Sie in die Tabelle in einer Datenbank konvertieren möchten. Attribut-Klasse definiert die POJO Entity-Klasse Namen.

  • < Tabelle > : Tag definiert den Namen der Tabelle. Wenn Sie identische Namen sowohl für die Klasse als auch in der Tabelle haben wollen, dann ist dieser Tag ist nicht erforderlich.

  • <attributes> : Tag definiert die Attribute (Felder in einer Tabelle)

  • <id> : Tag definiert den Primärschlüssel der Tabelle. Die <erzeugt Wert > Tag definiert, wie Sie den Primärschlüsselwert wie Automatische, Handbuch, oder genommen aus Sequence .

  • <Grund > : Tag wird für die Definition übrigen Attribute zur Verwendung bei Tisch.

  • <Spaltenname> : Tag wird verwendet, um benutzerdefinierte Tabellenfeldnamen in der Tabelle definieren

Anmerkungen

Allgemein XML-Dateien werden verwendet, um bestimmte Komponenten zu konfigurieren, oder Mapping zwei verschiedene Spezifikationen der Komponenten. In unserem Fall haben wir, um XML-Dateien in einem Rahmen getrennt zu halten. Das bedeutet, dass beim Schreiben einer XML-Datei Mapping, müssen wir vergleichen die POJO Klasse Attribute mit Entity-Tags in der Datei mapping.xml.

Hier ist die Lösung. In der Klassendefinition, können wir die Konfigurationsteil mit Anmerkungen zu schreiben. Anmerkungen werden für die Klassen, Eigenschaften und Methoden verwendet. Anmerkungen beginnen mit "@"-Symbol. Anmerkungen werden vor einer Klasse, Eigenschaft oder Methode deklariert. Alle Anmerkungen des JPA sind in der javax.persistence -Paket definiert.

Hier Liste der Anmerkungen in unseren Beispielen sind unten angegeben.

Anmerkung Beschreibung
@Entity erklärt, die Klasse als eine Einheit oder eine Tabelle.
@Table erklärt, Tabellennamen.
@Basic Gibt nicht-Zwang Felder explizit.
@Embedded Gibt die Eigenschaften der Klasse oder eines Unternehmens, dessen Wert ist eine Instanz einer Klasse bündig.
@Id Gibt die Eigenschaft, die Verwendung der Identität (Primärschlüssel einer Tabelle) der Klasse.
@GeneratedValue Gibt an, wie die Identität Attribut kann wie die automatische, manuelle oder Wert aus einer Sequenz Tabelle entnommen initialisiert werden.
@Transient Gibt die Eigenschaft, die nicht persistent ist, dh, wird der Wert noch nie in der Datenbank gespeichert.
@Column Gibt die Spalte Attribut für die Persistenz-Eigenschaft.
@SequenceGenerator Gibt den Wert für die Eigenschaft, die in derGeneratedValue Annotation angegeben ist. Es schafft eine Sequenz.
@TableGenerator Gibt den Wert für den Generator in derGeneratedValue Annotation angegebenen Eigenschaft. Es wird eine Tabelle für Wertgenerierung.
@AccessType Diese Art der Anmerkung wird verwendet, um die Zugriffstyp festlegen. Wenn SieAccessType (FIELD) gesetzt ist, dann tritt Zugang Feld weise. Wenn SieAccessType (PROPERTY) gesetzt ist, dann tritt Zugang Property weise
@JoinColumn Gibt eine Entität Vereinigung oder Einrichtung Kollektion. Dies ist in viel zu-Eins und Eins-zu-Viele Verbände verwendet.
@UniqueConstraint Gibt die Felder und die eindeutige Einschränkungen für den primären oder der sekundären Tabelle.
@ColumnResult verweist auf den Namen einer Spalte in der SQL-Abfrage mit SELECT-Klausel.
@ManyToMany Definiert eine viele-zu-viele-Beziehung zwischen den Tabellen verknüpfen.
@ManyToOne Definiert eine Viele-zu-eins-Beziehung zwischen den Tabellen verknüpfen.
@OneToMany Definiert eine Eins-zu-viele-Beziehung zwischen den Tabellen verknüpfen.
@OneToOne Definiert eine Eins-zu-eins-Beziehung zwischen den Tabellen verknüpfen.
@NamedQueries gibt Liste der benannten Abfragen.
@NamedQuery Gibt eine Abfrage mit statischen Namen.

Java Bean Norm

Die Java-Klasse kapselt die beispielsweise Werte und ihr Verhalten zu einer Einheit namens Objekt. Java Bean ist eine vorübergehende Lagerung und wiederverwendbare Komponente oder ein Objekt. Es ist eine Klasse, die serialisierbar einen Default-Konstruktor und Getter und Setter Methoden, um die Instanz zu initialisieren hat Attribute individuell.

Bean Konventionen

  • ean enthält die Standard Konstruktor oder eine Datei, die serialisierte Instanz enthält. Daher kann eine andere Bohne Bohnen instanziieren.

  • Die Eigenschaften einer Bean kann in boolesche Eigenschaften oder nicht-boolesche Eigenschaften getrennt werden.

  • Nicht-Boolesche Eigenschaft enthält Getter und Setter -Methoden.

  • Boolean-Eigenschaft enthalten Setter und ist -Methode.

  • Getter -Methode von Eigentum sollte mit kleinen mit Buchstaben beginnen get (Java-Methode Konvention) und setzte sich mit einem Feldnamen, die mit Großbuchstaben beginnt. Zum Beispiel ist der Feldname Gehalt daher die Getter-Methode dieses Feldes ist getSalary().

  • Setter -Methode von Eigentum sollte mit kleinen Buchstaben gekennzeichnete auf (Java-Methode Konvention) zu starten, weiter mit einem Feldnamen, die mit Großbuchstaben und startet die Argument-Wert , um zum Feld gesetzt. Zum Beispiel ist der Feldname Gehalt daher die Setter-Methode dieses Feldes ist setSalary (Doppel sal) .

  • Für boolesche Eigenschaft, ist -Methode, um zu überprüfen, ob es wahr oder falsch ist. Zum Beispiel die boolesche Eigenschaft leer , ist -Methode von diesem Bereich ist die isEmpty().



Advertisements