Ruhezustand - Eins-zu-Eins-Beispiel (XML-Zuordnung)

Ruhezustand - Eins-zu-Eins-Beispiel (XML-Zuordnung)

Eine Eins-zu-Eins-Beziehung liegt vor, wenn sich eine Entität auf genau ein Vorkommen in einer anderen Entität bezieht.

In diesem Tutorial zeigen wir Ihnen, wie Sie mit einer Eins-zu-Eins-Tabellenbeziehung in Hibernate über eine XML-Zuordnungsdatei (hbm) arbeiten.

In diesen Tutorials verwendete Tools und Technologien:

  1. Ruhezustand 3.6.3.Final

  2. MySQL 5.1.15

  3. Maven 3.0.3

  4. Eclipse 3.6

Projektstruktur

Siehe die endgültige Projektstruktur dieses Tutorials.

one to one project structure

Projektabhängigkeit

Holen Sie sichhibernate.jar aus dem JBoss-Repository, Maven kümmert sich um alle damit verbundenen Abhängigkeiten für Sie.

Datei: pom.xml



    
        
            JBoss repository
            http://repository.jboss.org/nexus/content/groups/public/
        
    

    

        
        
            mysql
            mysql-connector-java
            5.1.15
        

        
            org.hibernate
            hibernate-core
            3.6.3.Final
        

        
            javassist
            javassist
            3.12.1.GA
        

    

1. Eins-zu-eins-Tabellenbeziehung

Beim Entwurf einer Beziehungstabelle inone-to-oneenthält eine STOCK-Tabelle genau einen Datensatz in der Tabelle STOCK_DETAIL. Beide Tabellen haben dieselbe Stock_Id als Primärschlüssel. In der Tabelle STOCK_DETAIL ist Stock_Id der Primärschlüssel und auch ein Fremdschlüssel für die Tabelle STOCK. Dies ist die gebräuchliche Methode zum Definieren einer Eins-zu-Eins-Tabellenbeziehung.

one to one relationship

Informationen zum Abrufen des Tabellenskripts STOCK und STOCK_DETAIL finden Sie unter „http://www.example.com/mysql/how-to-define-one-to-one-relationship-in-mysql/[one to one tablebeziehung in MySQL] ”Artikel.

2. Hibernate Model Class

Erstellen Sie zwei Modellklassen -Stock.java undStockDetail.java, um die obigen Tabellen darzustellen.

Datei: Stock.java

package com.example.stock;

public class Stock implements java.io.Serializable {

    private Integer stockId;
    private String stockCode;
    private String stockName;
    private StockDetail stockDetail;

    //constructor & getter and setter methods

}

Datei: StockDetail.java

package com.example.stock;

public class StockDetail implements java.io.Serializable {

    private Integer stockId;
    private Stock stock;
    private String compName;
    private String compDesc;
    private String remark;
    private Date listedDate;

    //constructor & getter and setter methods

}

3. Ruhezustand XML-Zuordnung

Erstellen Sie nun zwei Hibernate-Zuordnungsdateien (hbm) -Stock.hbm.xml undStockDetail.hbm.xml.

Datei: Stock.hbm.xml





    
        
            
            
        
        
            
        
        
            
        
        
    

Datei: StockDetail.hbm.xml





    
        
            
            
                stock
            
        
        
        
            
        
        
            
        
        
            
        
        
            
        
    

Note
Die Hauptschwierigkeit in dieser Beziehung vonone-to-onebesteht darin, sicherzustellen, dass beiden der gleiche Primärschlüssel zugewiesen wird. In StockDetail.hbm.xml wird ein speziellesforeign identifier generator deklariert, das den Primärschlüsselwert aus der STOCK-Tabelle erhält. Mit constrained = "true" wird sichergestellt, dass der Bestand vorhanden sein muss.

4. Ruhezustand-Konfigurationsdatei

FügtStock.hbm.xml undStockDetail.hbm.xml in Ihre Hibernate-Konfigurationsdatei sowie MySQL-Verbindungsdetails ein.
_
Datei: hibernate.cfg.xml_






    com.mysql.jdbc.Driver
    jdbc:mysql://localhost:3306/exampledb
    root
    password
    org.hibernate.dialect.MySQLDialect
    true
    
    

5. Starte es

Wenn Sie es ausführen, fügt Hibernate eine Zeile in die Tabelle STOCK und eine Zeile in die Tabelle STOCK_DETAIL ein.

Datei: App.java

package com.example;

import java.util.Date;
import org.hibernate.Session;
import com.example.stock.Stock;
import com.example.stock.StockDetail;
import com.example.util.HibernateUtil;

public class App {
    public static void main(String[] args) {
        System.out.println("Hibernate one to one (XML mapping)");
        Session session = HibernateUtil.getSessionFactory().openSession();

        session.beginTransaction();

        Stock stock = new Stock();

        stock.setStockCode("4715");
        stock.setStockName("GENM");

        StockDetail stockDetail = new StockDetail();
        stockDetail.setCompName("GENTING Malaysia");
        stockDetail.setCompDesc("Best resort in the world");
        stockDetail.setRemark("Nothing Special");
        stockDetail.setListedDate(new Date());

        stock.setStockDetail(stockDetail);
        stockDetail.setStock(stock);

        session.save(stock);
        session.getTransaction().commit();

        System.out.println("Done");
    }
}

Ausgabe

Hibernate one to one (XML mapping)
Hibernate: insert into exampledb.stock (STOCK_CODE, STOCK_NAME) values (?, ?)
Hibernate: insert into exampledb.stock_detail
(COMP_NAME, COMP_DESC, REMARK, LISTED_DATE, STOCK_ID) values (?, ?, ?, ?, ?)
Done

Hibernate Annotation
Eine Eins-zu-Eins-Annotation im Ruhezustand finden Sie inexample

Laden Sie es herunter -Hibernate-one-to-one-xml-mapping.zip (10 KB)