目錄
每個類別層次結構的表格
1.建立實體類別
Car.java
Sports_Car.java
Taxi_Car.java
2。 Hibernate設定檔(hibernate.cfg.xml)
3。建立表格並儲存資料的程式碼
MySQL 表
首頁 Java java教程 在Hibernate中有哪些不同的繼承映射策略?

在Hibernate中有哪些不同的繼承映射策略?

Sep 12, 2023 pm 10:41 PM
策略 hibernate 繼承映射

繼承對應策略有三種類型 -

  • #每個類別層次結構的表格

  • 每個具體類別的表格

  • #每個子類別的表格

    在本文中,我們將討論每個類別的表格層次結構。

每個類別層次結構的表格

  • 在此,僅建立一個表格用於繼承對應。這種方法的缺點是表中儲存了大量空值。

  • @Inheritance(strategy=InheritanceType.SINGLE_TABLE)、@DiscriminatorColumn 和 @DiscriminatorValue 是此策略中使用的註解。

  • @DiscriminatorColumn 用於建立一個附加列,用於標識層次結構類別。

考慮以下範例來理解這一點 -

在Hibernate中有哪些不同的繼承映射策略?

#

實作步驟 -

  • 建立實體類別並為其使用適當的註解。

  • 編寫 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中有哪些不同的繼承映射策略?

以上是在Hibernate中有哪些不同的繼承映射策略?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP秒殺系統中的價格策略與促銷活動設計要點 PHP秒殺系統中的價格策略與促銷活動設計要點 Sep 19, 2023 pm 02:18 PM

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

SpringBoot專案裡怎麼整合Hibernate SpringBoot專案裡怎麼整合Hibernate May 18, 2023 am 09:49 AM

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

exe轉php:實作功能擴充的有效策略 exe轉php:實作功能擴充的有效策略 Mar 04, 2024 pm 09:36 PM

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

Astar質押原理、收益拆解、空投項目及策略 & 操作保姆級攻略 Astar質押原理、收益拆解、空投項目及策略 & 操作保姆級攻略 Jun 25, 2024 pm 07:09 PM

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

Java錯誤:Hibernate錯誤,如何處理與避免 Java錯誤:Hibernate錯誤,如何處理與避免 Jun 25, 2023 am 09:09 AM

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

CentOS7軟體的安裝步驟與策略全解析 CentOS7軟體的安裝步驟與策略全解析 Jan 04, 2024 am 09:40 AM

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

hibernate和mybatis有哪些差別 hibernate和mybatis有哪些差別 Jan 03, 2024 pm 03:35 PM

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

Java Hibernate中一對多與多對多關係的對應方式是什麼 Java Hibernate中一對多與多對多關係的對應方式是什麼 May 27, 2023 pm 05:06 PM

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

See all articles