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:
-
Ruhezustand 3.6.3.Final
-
MySQL 5.1.15
-
Maven 3.0.3
-
Eclipse 3.6
Projektstruktur
Siehe die endgültige Projektstruktur dieses Tutorials.

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.

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)