hibernate一對多和多對一問題

時間 2021-10-14 22:24:01

1樓:匿名使用者

乍一看,這的確是一種關係從不同的角度去看,但也正是這一點造成兩種關係並不相同。舉個例子:假如,資料庫有部門表,共10個部門;員工表,共100名員工,同時,假設每10名員工屬於乙個部門。

那麼,使用多對一的關係,是在員工實體裡放乙個部門實體。而使用一對多的關係,是在部門實體裡放乙個員工實體的集合。假如,要帶關係的查詢,那麼查出10名員工資訊和查出10個部門的資訊所產生的效果是很不一樣的。

別的不說,單從實體數量上來看 10名員工的實體數是 10 + 10 = 20;而10個部門的實體數 是 10 + 10 * 10 =110。這兩種關係所產生的實體數量是有很大區別的。當然,這兩種關係的區別不是只有這麼一點點。

從一件事情的不同的側面去看,會產生不同的結果,有時甚至感覺根本不是一件事,這兩種關係也是一樣的

2樓:匿名使用者

其實這是在應用程式的角度設計的,這樣可以方便的從任何乙個物件導航到另乙個物件,方便編寫程式。在資料庫中僅只是乙個外來鍵的表現而已。

3樓:匿名使用者

主要便於資料的提取操作也就是你在查某種表的時候可以把對應的表的資料一起查出來使用

hibernate 多對一,一對多,多對多, 在j**a中怎麼理解呢?

4樓:左瀟龍

首先我要告訴你,資料庫描述表之間的關係是通過外來鍵描述的,hibernate中是通過屬性描述的。

外來鍵是什麼意思?舉個例子說,資料庫中,你有個表是學生表,

我們簡單點說有三列,乙個是學生的id,乙個是姓名,乙個是班級的id

而在資料庫中,你會建乙個班級表,

其中有id和班級的名稱,比如計算機三班,二班等等。

班級和學生,班級是一,學生是多。

而在hibernate中,為了簡單起見,一般會在學生類中將班級屬性設定成乙個班級類,而在班級類中額外新增乙個list或者set。這麼做的好處簡單來說,是為了方便。

怎麼方便呢?

這麼說吧,比如我們沒這麼設定,而是在學生類中只有乙個班級的id,那麼你查到乙個學生,想看他班級的名稱,是不是還要根據班級的id,去班級表查詢對應的名字,這麼一來,就會十分麻煩,所以在hibernate中,如果表中有外來鍵,那麼一般會將這個外來鍵設定成那個表的實體類,這樣一來,我們就不需要多那一步了。

至於你說為什麼將屬性設定到班級的物件,然後儲存學生的資訊,學生表中就有班級id這個欄位的值了,這個問題,很簡單,因為你不僅把屬性儲存到班級物件中了,你肯定還把這個班級物件作為屬性設定給學生了,所以就有了。

換句話說,你等於還是間接的設定了班級id,這個字段,具體他們的對應關係,自然是在配置檔案中顯示的。

不知道說了這麼多,你能理解不。

手痠了,,,,希望對你有幫助。。。

5樓:調和若

外來鍵就是物件。。。。

hibernate物件關係是一對多好還是多對一好??為什麼??

6樓:匿名使用者

一對多 和多對一 一般是看需求來確定的,很多時候都是設定成雙向的舉個最最普通的離子 :

乙個班級裡面有多個學生 多個學生屬於乙個班級 從學生表來看 就是多對一的關係 從班級表來看就是一對多的關係 需求上如果說是從學生表想看到班級 那麼就設定成多對一的關係 如果想從班級看到學生 就設定成一對多的關係 有的時候為了通用性 可以設定成多對一雙向關聯 關係一般有多的一端來維護 這樣可以提高效率

為什麼能提高效率呢 我舉個比較容易理解的例子就像樓上所說的那樣,班裡來了乙個新老師 如果是多對一雙向,是老師記住所有同學簡單?還是每個同學記住老師簡單?很明顯 乙個同學記住老師要簡單的多 維護起來也方便 因此盡量不要讓一的一方來維護關係 關係要反轉給多的一方來維護

7樓:瀋陽

比較是需要有前提的,在某乙個前提下比較好壞才有意義。例如,如果從對資料庫操效能角度看的話,多對一好一些,一對多差一些。例如更新操作,一對多意味著要操作很多資料,而多對一不需要。

舉個例子,例如你的老師要管理乙個班的學生,如果遇到有事情要通知大家的話,是老師給每乙個學生打**好呢,還是每個學生給老師打**好問問有什麼事情好呢。如果從老師角度的話,那麼損失效能就比較多,如果從學生到老師就會好一些。這個在hibernate中通過inverse屬性來體現的。

hibernate一對多對映時,單向關聯和雙向關聯有什麼區別,哪個好?

8樓:

單向關聯就是只使用單方面來維護關係,雙向關聯就是雙方面都要維護關係, 要決定是使用單向的關聯還是雙向的關聯,要取決你的業務要求,如果單向聯絡能夠達到你所需要的業務要求,那肯定就是選擇單向的關聯(我的建議也是使用單向的關聯,使用雙向的關聯,關係複雜了,容易出現問題)。關聯的時候還涉及的就是控制權的問題,在最好把控制權給與many的那方(控制權就是誰來維護他們之間的關係),

hibernate註解配置一對多,多對一,多對多,一對一

9樓:匿名使用者

你的理解完全正確。hibernate的一對一配置,有兩種方式,你所用的方式是屬於第二種,就是採用多對一的理論方法去變相地配置一對一。

hibernate中一對多和多對一關係的維護,哪乙個更好一點?有什麼區別和相同?

10樓:匿名使用者

一對多就是多對一,只不過站在不同的兩個角度來說。

至於哪一端來維護,要看實際功能需求中,哪一方佔主導地位

11樓:吸淋進淋

題目什麼意思?維護?

hibernate一對多雙向的問題

問題應該出在主鍵的生成方式上 傳統的都用native 或者 assigned 通過baidu或者hibernate所有主鍵生成方式 又漲知識了 主鍵產生器 可選項說明 1 assigned 主鍵由外部程式負責生成,無需hibernate參與,即由使用者自己指定。2 hilo 通過hi lo 演算法實...

hibernate多對多對映中間表有多餘字段問題該如何對映

省省是吧。已myeclipse為例 將多對多轉換成乙個多對一和乙個一對多。中間表自己控制。hibernate多對多對映中間表怎麼加入其它字段 旺仔鐵柱 將多對多建立成兩個一對多關係就行了。你的中間表物件沒有主鍵,第一種方式就是你為中間表增加乙個主鍵,這個也是如果要把中間表對映成物件的推薦方式。hib...

hibernate中多對多關係如何儲存中間表其他表資料不變

可以試試用hibernate原生查詢直接用sql語句向中間表插入資料。query query session.createsqlquery insert into t stu tea stu id,tea id values query.setinteger 1,1 query.setinteger...