在Hibernate中有哪些不同的繼承映射策略?
繼承對應策略有三種類型 -
#每個類別層次結構的表格
每個具體類別的表格
-
#每個子類別的表格
在本文中,我們將討論每個類別的表格層次結構。
每個類別層次結構的表格
在此,僅建立一個表格用於繼承對應。這種方法的缺點是表中儲存了大量空值。
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)、@DiscriminatorColumn 和 @DiscriminatorValue 是此策略中使用的註解。
@DiscriminatorColumn 用於建立一個附加列,用於標識層次結構類別。
考慮以下範例來理解這一點 -
實作步驟 -
建立實體類別並為其使用適當的註解。
編寫 hibernate 設定檔並新增映射類別。
編寫程式碼來建立資料並將其儲存在表中。
1.建立實體類別
Car.java
package com.tutorialspoint; @Entity @Table(name = "car") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="category",discriminatorType=DiscriminatorType.STRING) @DiscriminatorValue(value="car") public class Car { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(name = "name") private String name; @Column(name = "color") private String color; //Getters //Setters }
Sports_Car.java
package com.tutorialspoint; import javax.persistence.*; @Entity @DiscriminatorValue("sportscar") public class Sports_Car extends Car{ @Column(name="mileage") private int mileage; @Column(name="cost") private int cost; //Getters //Setters }
Taxi_Car.java
package com.tutorialspoint; import javax.persistence.*; @Entity @DiscriminatorValue("taxicar") public class Taxi_Car extends Car{ @Column(name="farePerKm") private int farePerKm; @Column(name="available") private boolean available; //Getters //Setters }
2。 Hibernate設定檔(hibernate.cfg.xml)
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- JDBC Database connection settings --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/demo?useSSL=false</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool settings ... using built-in test pool --> <property name="connection.pool_size">4</property> <!-- Echo the SQL to stdout --> <property name="show_sql">true</property> <!-- Select our SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create-drop</property> <!-- name of annotated entity class --> <mapping class="com.tutorialspoint.Car"/> <mapping class="com.tutorialspoint.Sports_Car"/> <mapping class="com.tutorialspoint.Taxi_Car"/> </session-factory> </hibernate-configuration>
3。建立表格並儲存資料的程式碼
package com.tutorialspoint; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class StoreTest { public static void main(String args[]){ SessionFactory sessionFactory = new Configuration() .configure("com/tutorialspoint/hibernate.cfg.xml") .buildSessionFactory(); Session session=sessionFactory.openSession(); Transaction t=session.beginTransaction(); Car c1=new Car(); c1.setName("Mercedes"); c1.setColor("Black"); Sport_Car c2=new Sport_Car(); c2.setName("Porsche"); c2.setColor("Red"); c2.setMileage(20); c2.setCost(5000000); Taxi_Car c3=new Taxi_Car(); c3.setName("Innova"); c3.setColor("White"); c3.setFarePerKm(7); c3.setAvailable(true); session.persist(c1); session.persist(c2); session.persist(c3); t.commit(); session.close(); } }
MySQL 表
以上是在Hibernate中有哪些不同的繼承映射策略?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP秒殺系統中的價格策略和促銷活動設計要點在一個秒殺系統中,價格策略和促銷活動設計是非常重要的一部分。合理的價格策略和精心設計的促銷活動可以吸引用戶參與秒殺活動,提升系統的使用者體驗和獲利能力。以下將詳細介紹PHP秒殺系統中的價格策略和促銷活動設計要點,並提供具體的程式碼範例。一、價格策略設計要點決定基準價格:在秒殺系統中,基準價格是指商品正常銷售時的價格。在

在SpringBoot專案中整合Hibernate前言Hibernate是一個流行的ORM(物件關係映射)框架,它可以將Java物件映射到資料庫表,從而方便地進行持久化操作。在SpringBoot專案中,整合Hibernate可以幫助我們更輕鬆地進行資料庫操作,本文將介紹如何在SpringBoot專案中整合Hibernate,並提供相應的範例。 1.引入依賴在pom.xml檔案中引入以下依賴:org.springframework.bootspring-boot-starter-data-jpam

EXE轉PHP:實現功能擴展的有效策略隨著互聯網的發展,越來越多的應用程式開始向web化遷移,以實現更大範圍的用戶訪問和更便捷的操作。在這個過程中,將原本以EXE(執行檔)方式運作的功能轉換為PHP腳本的需求也逐漸增加。本文將探討如何將EXE轉換為PHP來實現功能擴展,同時給出具體的程式碼範例。為什麼將EXE轉換為PHP跨平台性:PHP是一種跨平台的語言

目錄Astar Dapp 質押原理質押收益 拆解潛在空投項目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 質押策略 & 操作“AstarDapp質押”今年初已升級至V3版本,對質押收益規則做了不少調整。目前首個質押週期已結束,第二質押週期的「投票」子週期剛開始。若要獲得「額外獎勵」收益,需掌握此關鍵階段(預計持續至6月26日,現餘不到5天)。我將細緻拆解Astar質押收益,

Java是一種物件導向程式語言,它被廣泛地應用於軟體開發領域。 Hibernate是一種流行的Java持久化框架,它提供了一種簡單且高效的方式來管理Java物件的持久化。然而,開發過程中經常會遇到Hibernate錯誤,這些錯誤可能會導致程式的異常終止或不穩定。如何處理和避免Hibernate錯誤成為了Java開發者必須掌握的能力。本文將介紹一些常見的Hib

2010年開始正式接觸Linux,入門發行版是Ubuntu10.10,後來過渡到Ubunu11.04,這也嘗試了許多其他主流的發行版。進入實驗室之後,開始使用CentOS5,然後是CentOS6,現在進化到CentOS7。使用了四年的Linux,前三年在瞎折騰,浪費了不少時間,也得到了不少經驗與教訓。現在可能是真的老了,已經不願意折騰了,只希望配置好一個系統之後,就一直使用下去。為什麼要寫/讀這篇使用Linux尤其是CentOS會遇到一些坑,或是一些有潔癖的人不能忍的事情:官方源中的軟體

hibernate和mybatis的差別:1、實作方式;2、效能;3、物件管理的比較;4、快取機制。詳細介紹:1、實作方式,Hibernate是一個完整的物件/關係映射解決方案,將物件與資料庫表進行映射,MyBatis則需要開發者手動編寫SQL語句以及ResultMap;2、效能,Hibernate在開發速度上可能比MyBatis快,因為Hibernate簡化了DAO層等等。

Hibernate的一對多和多對多Hibernate是一個優秀的ORM框架,它簡化了Java應用程式與關係型資料庫之間的資料存取。在Hibernate中,我們可以使用一對多和多對多的關係來處理複雜的資料模型。 Hibernate的一對多在Hibernate中,一對多關係是指一個實體類別對應多個另一個實體類別。例如,一個訂單(Order)可以對應多個訂單項目(OrderItem),一個使用者(User)可以對應多個訂單(Order)。要在Hibernate中實作一對多關係,需要在實體類別中定義一個集合屬性來存
