Рубрики
Без рубрики

Гибернация – пример один к одному (сопоставление XML)

– Гибернация – Пример один к одному (сопоставление XML)

Отношения “один к одному” возникают, когда одна сущность связана ровно с одним вхождением в другой сущности.

В этом уроке мы покажем вам, как работать с отношением таблиц “один к одному” в режиме гибернации с помощью файла сопоставления XML (hbm).

Инструменты и технологии, используемые в этом учебном пособии:

  1. Спящий режим 3.6.3. Окончательный
  2. MySQL 5.1.15
  3. Maven 3.0.3
  4. Затмение 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

Ссылка

  1. Документация по гибернации – отношения один к одному

Оригинал: “https://mkyong.com/hibernate/hibernate-one-to-one-relationship-example/”