Отношения “один к одному” возникают, когда одна сущность связана ровно с одним вхождением в другой сущности.
В этом уроке мы покажем вам, как работать с отношением таблиц “один к одному” в режиме гибернации с помощью файла сопоставления XML (hbm).
Инструменты и технологии, используемые в этом учебном пособии:
- Спящий режим 3.6.3. Окончательный
- MySQL 5.1.15
- Maven 3.0.3
- Затмение 3.6
Структура проекта
См. окончательную структуру проекта этого руководства.
Зависимость от проекта
Получить hibernate.jar из репозитория JBoss Maven позаботится обо всех связанных зависимостях для вас.
Файл: 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. ” Отношение таблицы “один к одному”
Конструкция таблицы отношений один к одному , таблица ЗАПАСОВ содержит ровно одну запись в таблице STOCK_DETAIL. Обе таблицы имеют тот же Stock_Id, что и первичный ключ. В таблице STOCK_DETAIL STOCK_ID является первичным ключом, а также внешним ключом к таблице ЗАПАСОВ. Это распространенный способ определения взаимосвязи таблиц “один к одному”.
Чтобы получить сценарий таблицы STOCK и STOCK_DETAIL, обратитесь к этой статье ” отношение таблицы один к одному в MySQL “.
2. Класс модели гибернации
Создайте два класса моделей – Stock.java и StockDetail.java , для представления приведенных выше таблиц.
Файл: Stock.java
package com.mkyong.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
}
Файл: StockDetail.java
package com.mkyong.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. Отображение XML в режиме гибернации
Теперь создайте два файла отображения гибернации (hbm) – Stock.hbm.xml и и
Файл: Stock.hbm.xml
Файл: StockDetail.hbm.xml
stock
4. Файл конфигурации гибернации
Ставит Stock.hbm.xml и StockDetail.hbm.xml в вашем файле конфигурации гибернации, а также сведения о подключении к MySQL. Файл: hibernate.cfg.xml
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/mkyongdb root password org.hibernate.dialect.MySQLDialect true
5. Запустите Его
Запустите его, Hibernate вставит строку в таблицу ЗАПАСОВ и строку в таблицу STOCK_DETAIL.
Файл: App.java
package com.mkyong;
import java.util.Date;
import org.hibernate.Session;
import com.mkyong.stock.Stock;
import com.mkyong.stock.StockDetail;
import com.mkyong.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");
}
}
Выход
Hibernate one to one (XML mapping) Hibernate: insert into mkyongdb.stock (STOCK_CODE, STOCK_NAME) values (?, ?) Hibernate: insert into mkyongdb.stock_detail (COMP_NAME, COMP_DESC, REMARK, LISTED_DATE, STOCK_ID) values (?, ?, ?, ?, ?) Done
Ссылка
Оригинал: “https://mkyong.com/hibernate/hibernate-one-to-one-relationship-example/”