SSH Hibernate 二 對映關係(下)

2021-07-25 09:35:02 字數 3267 閱讀 5898

前面已經講了一對一和一對多關係使用hibernate的對映。還剩下多對多關聯和繼承對映沒有講,這篇部落格是想把這兩個一塊都總結了。

關係型資料庫無法直接表達多對多的關係,需要引入中間表以外鍵關聯的方式來表達。如下圖:

單向多對多關聯對映,是在其中一端加入乙個屬性儲存另一端的物件集合。而在另一端則不需要。看到這裡你可能會有疑問,這不是和一對多關聯一樣嗎?我們以在categories一端作為持有者來看。

看到這個類圖確實是和一對多關聯裡的單向對映方式沒有區別。我們接著再看它的配置方式:

[html]view plain

copy

<

class

name

="category"

table

="t_category"

>

<

idname

="category_id"

>

<

generator

class

="native"

/>

id>

<

property

name

="category_name"

/>

<

setname

="items"

table

="t_catetory_item"

>

<

keycolumn

="item_id"

/>

<

many-to-many

class

="item"

column

="item_id"

/>

set>

class

>

<

class

name

="item"

table

="t_item"

>

<

idname

="item_id"

>

<

generator

class

="native"

/>

id>

<

property

name

="item_baseprice"

/>

class

>

從配置方式裡可以看見和一對多關係對映的區別在於:對應了中間表t_category_item。也就是說category持有的item不是直接持有,而是通過了中間的關係去對應持有的物件有什麼。而一對多關聯因為其中一端來說是唯一的,則可以直接持有。

雙向關聯就是兩端都持有對方,看過了一對多的雙向和前面的單向多對多應該很容易理解了。這裡就不再多說,看看類圖和配置吧。

繼承關係的對映呢看上去和之前的好像很不同,這裡為了幫助理解需要說明一點。之前我們討論對映關係都是從關係型資料庫的角度出發,以類之間的關係去表達資料之間的關係。這在理解上沒有什麼問題,但是放在繼承對映裡就有問題了,因為資料庫中並不存在繼承關係。所以,我們要換個角度了,以關係型資料庫來表達類的繼承關係。我們先看類圖:

這裡就不寫如何配置了,太長了。

總結:對映關係的學習到了這裡就告一段落了,總結如下:

第一,關係對映的出發點應該是:如何在關係型資料庫中表達,類之間的關係。使關係型資料庫物件化。

第二,所有的對映關係的本質都是:在哪乙個物件裡作為屬性儲存有另乙個的物件或者物件集合

第三,對於資料的訪問的方向是:誰持有誰就是訪問入口

SSH Hibernate 二 對映關係(下)

前面已經講了一對一和一對多關係使用hibernate的對映。還剩下多對多關聯和繼承對映沒有講,這篇部落格是想把這兩個一塊都總結了。關係型資料庫無法直接表達多對多的關係,需要引入中間表以外鍵關聯的方式來表達。如下圖 單向多對多關聯對映,是在其中一端加入乙個屬性儲存另一端的物件集合。而在另一端則不需要。...

Spring boot 的靜態資源對映對映《二》

現在,我們要討論,如果我想訪問的資源不在這四個預設的檔案下面怎麼辦?是的,對映可以解決這個問題。spring mvc static path pattern static static可以是其他的資料夾,這裡點名一下 這樣的話,我們可以訪問一下 成功訪問到了。我的目錄檔案結構 截止到現在,配置靜態便...

Flask總結(二) URL對映

flask用裝飾器實現url對映。先來看乙個例子 from flask import flask def hello world return welcome to flask def test id return the id is d id if name main 執行,然後在瀏覽器中訪問ht...