07 元件對映

2021-08-20 15:58:51 字數 2663 閱讀 3436

假設我們有乙個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...