2011-03-21 27 views
0

我是一個初學者在hibernate.I看到一些樣品中的互聯網,有人能解釋一下這個休眠方法呢,

org.hibernate.Session session; 

//assuming session instance is initialized 

    SampleBean msoft=(SampleBean)session.get(SampleBean.class,id); 
    //**id** is of the type Long 

文檔的解釋是,

對象得到( Class clazz,Serializable id)

返回給定實體類的持久化實例,如果沒有這樣的持久化實例,則返回null。

我想知道,

  1. ID是否這裏是主鍵?
  2. 有些身體可以解釋我這種方法的工作原理嗎?它是否只返回SampleBean對象中的一行?
  3. 如果它返回多行,會發生什麼?

PS:使用SampleBean映射的表的主鍵是INT類型。

回答

1

是的,這裏的id是主鍵。它將是指定實體使用其主鍵的任何類型的實例(通常爲整型,長型或字符串,儘管其他類型完全可能)。

該方法的工作原理是轉到與給定實體類型(本例中爲SampleBean)相對應的數據庫中的表格並執行基於主鍵的提取。實質上,它運行的SQL查詢大致類似於SELECT * FROM sampleBeanTable t WHERE t.primaryKey = [id];

將返回至多1行(或更準確地說,1個實體的實例)(或者您的數據庫實例非常非常破碎,因爲如果有多行意味着兩個或更多對象具有相同的密鑰)。如果沒有找到具有給定鍵的對象,則該方法返回null

2

我想知道,這裏的id是否是 的主鍵?

是的。該ID應該是唯一的。

一些機構可以解釋我,這 方法是如何工作的,

中查找DB指定ID,並返回clazz中的一個實例。

是否只返回 SampleBean對象中的一行?

是的。由於id是唯一的,應該只有一行。

如果它比一行返回更多 會發生什麼?

如果id是唯一或主鍵,則不會發生。

相關問題