假設我們有乙個person實體類,該實體類有id,name,位址資訊(province,city,street)等;而其他的一些類中也會有位址資訊,比如student實體類、customer實體類,這時我們可以把位址資訊單獨抽象出來封裝到乙個address類中,在把address物件作為其他實體類的屬性,以實現**重用。但是,我們把實體類對映到表中時,需不需要單獨為address類建立乙個表呢?實際上單獨為address類配置乙個表過於繁瑣,因為address資訊比較簡單,而且還需配置各個類與address表的關係。其實,我們只要可以在各個實體類中增加簡單的幾列就可以儲存address資訊。例如,當我們對映實體類person的乙個物件到資料庫中時,此物件其中的address屬性應該保持到關聯位址資訊的字段,而當我們取資料時,位址資訊又應該被封裝成address物件儲存在實體類中。這就是元件對映,把address當成person的乙個元件。
元件對映是指在乙個實體類中有乙個屬性為自定義類,但自定義類中沒有oid(object identifier:物件識別符號),在資料庫中也沒有對應的這個類的表。
客戶表(t_customer)
create
table t_customer(
id number(10) primary
key,
name varchar2(20),
province varchar2(20),
city varchar2(20),
street varchar2(20),
);
我們建立customer和address這兩個類的類結構,並且設定兩個類之間的雙向關聯關係。
customer類
public
class
customer
address 類
public
class
address
使用component這種錶簽來說明類中有address這種元件,當然我們知道這種name=」address」指的是類中有這個setter和getter方法(property)。
parent標籤可以配置兩個類的雙向關聯關係,也就是說,當我們成功查詢之後,封裝的address類物件裡也通過customer這種屬性(property)封裝了customer資訊,從而建立起雙向關聯關係,這正對應我們前面的類結構。
name="customer"
table="t_customer">
......
name="address"
class="address">
name="customer"/>
name="province"
type="string"
column="province">
property>
name="city"
type="string"
column="city">
property>
name="street"
type="string"
column="street">
property>
component>
class>
編寫component.hbm.xml,並將對映檔案配置到核心配置檔案中(hibernate.cfg.xml)
<?xml version="1.0" encoding="utf-8"?>
package="com.li.component.pojo">
name="customer"
table="t_customer">
name="id"
type="long"
column="id">
class="assigned">
generator>
id>
name="name"
type="string"
column="name">
property>
name="address"
class="address">
name="customer"/>
name="province"
type="string"
column="province">
property>
name="city"
type="string"
column="city">
property>
name="street"
type="string"
column="street">
property>
component>
class>
package com.li.component.pojo;
import org.hibernate.session;
import org.hibernate.transaction;
import com.li.common.hibernatesessionfactory;
/*元件對映的測試類*/
public
class
customertest catch (exception e)
}}
Hibernate對映(七) 元件
情況 多個類中存在一些相同屬性,將其抽取出來 與繼承區別?繼承 繼承實在編譯時刻靜態定義的,較方便復用。但繼承對子類暴露了其父類的實現細節,破壞了封裝性 子類與父類有著較強的依賴關係,最終限制了復用 組合 組合是通過獲得對其他物件的引用而在執行時刻動態定義的。基於介面進行開發,所以實現上依賴性小 設...
元件 1 元件定義
使用vue.extend options 定義元件,引數為乙個包含了被定義組選項的物件。使用vue.component id,definition 註冊定義好的元件,id為該元件名稱。definition 既可以是乙個extend 返回的例項,也可以是乙個包含元件選項的物件 將會自動呼叫extend...
012 元件註冊
元件,自定義元素。可以拓展html元素,封裝重複可用的 提高 復用率。所有的vue元件例項都是vue的例項,因此他們擁有和頁面相同的宣告週期鉤子函式 一 全域性註冊 1 編寫元件 tema.vue 全域性元件註冊 div template 2 註冊 在入口檔案main.js中 import tema...