1. 程式人生 > >Hibernate對映類繼承之每個帶有聯合的具體類一張表(每個子類各一張表,共用一個父類對映檔案)

Hibernate對映類繼承之每個帶有聯合的具體類一張表(每個子類各一張表,共用一個父類對映檔案)

pom.xml:

 

hibernate.cfg.xml:

 

父類,pojo/BillingDetails.java:

 

子類,pojo/BillingDetails .java:

 

子類,pojo/CreditCard .java:

 

對映檔案, pojo/BillingDetails.hbm.xml:

 

util/HibernateUtil.java:

 

util/Manager.java:

 

上例:

抽象的超類或者介面被宣告為abstract="true";否則超類的例項就需要一張單獨的表。

資料庫識別符號對映被該層中所有的具體類共用。CREDIT_CARD和BANK_ACCOUNT表都有一個ID主鍵列。現在資料庫識別符號屬性必須被所有的子類共享。因而你必須把它移到BillingDetails裡面,並且從CreditCard和BankAccount中把它移除。

超類(或者介面)的屬性在對映檔案中宣告,並被所有具體的類對映繼承。這樣避免了相同對映的複製。

具體的子類被對映到一張表,表繼承超類(或者介面)識別符號和其他的屬性對映。

注意,這裡也是兩張表:CREDIT_CARD和BANK_ACCOUNT表

CREDIT_CARD表:

ID

OWNER

NUMBER

EXP_MONTH

EXP_YEAR

BANK_ACCOUNT表:

ID

OWNER

ACCOUNT

BANKNAME

SWIFT

相關推薦

Hibernate對映繼承每個帶有聯合具體(個子,共用一個對映檔案)

pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat

Hibernate對映繼承每個帶有隱式多型的具體(個子,有各自的對映檔案)

Hibernate對映類繼承之每個帶有隱式多型的具體類一張表(每個子類各一張表) 我們可以準確地給每個子類使用一張表。子類的所有屬性,包括被繼承的屬性,都可以被對映到這張表的列。如圖:                         CreditCard子類   -----&

Hibernate對映繼承每個(父子都有各自的,並共用一個對映檔案)

這種方案是把繼承關係表示為相關的外來鍵關聯。宣告持久化屬性的每個類/子類(包括抽象類甚至介面)都有它自己的表。不同於我們先前例子對映的每個具體類一張表的策略,此處的表僅僅包含了每個非繼承的屬性(由子類本身宣告的每個屬性)以及也是超類表的外來鍵的主鍵的列。 如例CreditCa

Hibernate對映繼承每個層次結構(父子共用,一個對映檔案)

整個類層次結構可以被對映到單張表。這張表把所有類的所有屬性的列都包括在層次結構中。由特定行表示的具體子類通過一個型別辨別標誌列的值進行識別。這個對映策略在效能和簡單性方面都勝出一籌。它是表示多型的最佳方法---多型和非多型的查詢都執行得很好---並且更易於手工實現。不用複雜的

多個共同繼承一個

根據查詢funname不同,分類進入不同類,呼叫父類方法,先進入相同父類進行處理資料,判斷sessionid是否存在,如果不存在,呼叫子類方法處理,減少程式碼重複。 String funname=abc; if(funname.equalsIgnoreCase("abc")){ str=

求助:Python菱形繼承傳參問題,是否應該使用super?一個都有各自引數該如何傳參?以及使用了super之後還能否獨自生成物件?

Python菱形繼承 傳參問題 類A, 類B,C均繼承於A 類D繼承與(B, C) 程式碼如下: class A: def __init__(self, a): print("Enter A") self.a =

如果一個有多個子或者一個介面有多個實現的時候,Spring是如何判斷該呼叫哪個的呢?原始碼分析如下

在doResolveDependency的裡面進行呼叫determinePrimaryCandidate(matchingBeans, descriptor);方法判斷 determinePrimaryCandidate(matchingBeans, descr

(11)對映繼承關係二每個對應(@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

這種策略支援雙向的一對多關聯,這裡不支援IDENTITY生成器策略。因為存在多型查詢,所以id在繼承關係的表中必須是唯一的。這就意味著不能用AUTO和IDENTITY生成器。 在mysql中,只能用生

hibernate元件對映繼承對映

表結構: Create table customer( id int primary key, name varchar(15), home_street varchar(255), home

Date繼承方法

自增 cal 第一天 分別是 sda 技術分享 script TE may ECMAScript中的Date類型是在早期Java中的java.util.Date類型基礎上構建的。為此,Date類型使用自UTC(國際協調時間)1970年1月1日午夜零時開始經過的毫秒數來保存日

編程開發--Java集合繼承與實現必備知識

編程開發 next() int end long dha cos dHash IV 1、LinkedHashSet有序鏈式集合 舉例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSe

(8)hibernate四種繼承對映

一 一個類繼承體系一張表 1 物件模型(java類結構) 2 對映後據庫中的表 3 程式碼 Employee.java package com.learning; public cla

Hibernate教程04——繼承(子連結

Hibernate教程04——類繼承(子類、父類連結表) 一、簡介 每個類都生成一張表,父類儲存公共資料,子類儲存自己獨有的資料,通過id進行關聯。 父類(Animal)和子類(Pig、Bird)均生

hibernate元件對映繼承對映

元件對映 類的關係: wheel.javapublic class Wheel { private String brandname; private int size; }Car.java public class Car { private int id; pr

typescript學習旅----建立物件 繼承

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device

2009-04-16 | Hibernate關聯對映繼承對映

  * 子類使用<subclass>標籤定義,在定義subclass的時候,需要注意如下幾點:     Subclass標籤的name屬性是子類的全路徑名     在Subclass標籤中,用discriminator-value屬性來標明本子類的discriminator欄位(用來區分不同類的欄

c++訪問從基繼承的成員

1當派生類與基類中有相同成員時:若沒有特別限定,則通過派生類物件使用的是派生類的同名成員。如果要通過派生類物件訪問基類中被隱藏的同名成員,應使用基類名和作用域操作符“::”來限定#include <iostream> using namespace std; cl

第三十節 C++ 繼承如何在派生中呼叫基被覆蓋的函式成員(方法)

#include <iostream> using namespace std; /*有些基類的方法在派生類被覆蓋,但有時我們需要呼叫基類的方法。 * 這裡提供了兩種方式去呼叫基類被覆蓋的

Hibernate學習-10-元件對映繼承對映

類的關係     組合關係        一個類中包含了另一個類。這兩個類就是組合關係     繼承關係       一個類繼承一個關係 元件對映 com.cx.component.Car package com.cx.component; /** * Created

Hibernate對映解析---繼承對映

現實世界中有很多種動物,比如:Pig(豬),Bird(鳥)等等,當我用面向物件的思想分析時,我們一般會將它們的共同部分抽取出來增加一個抽象類Animal(動物),這樣在編寫程式時Pig和Bird只需要繼承它們的父類Animal就可以省去很多重複的程式碼。Java程式碼中只需