2013-04-29 27 views
0

當我們做一個我們應該處理異常,同時節省了enitity

session.save() 
在hiberbate側

它可能會引發不同exceptions.Do我們需要處理them.Is所以我們應該怎麼辦呢?

我發現保存()(在SessionImpl和SessionDelegatorBaseImpl)的兩種實現方法和SessionImpl的保存()它拋出休眠例外。

誰能請解釋這些東西給我嗎?

回答

1

大多數Hibernate的例外是RuntimeExceptions所以你必須處理那麼只有當你想。

因此,在開始與Hibernate 3.x中,通過 Hibernate拋出所有的例外是未選中運行時異常,這是 在單個位置中的應用通常處理的亞型。這也 使任何休眠模板或包裝API過時。

這可能有助於why hibernate changed HibernateException to (unchecked) RuntimeException

+0

是否檢查異常決不會影響決定在哪裏處理它。這不是由API決定的。這就是爲什麼檢查異常是Java的錯誤特徵。 – 2013-04-29 09:25:32

+0

@MarkoTopolnik:是的,完全同意。看看OP的問題和評論我認爲他對拋出哪種類型的異常以及他是否需要處理它們感到困惑。所以我相應地回答了。 – xyz 2013-04-29 10:02:31

0

您可以捕獲異常並拋出另一個更有意義的異常,並將其捕獲到可以充分處理異常的適當層中。

+0

我必須知道會拋出什麼異常,爲了節省處理他們的時候,或者我應該抓住更大的異常和處理所有的人都在同樣的方式? – 2013-04-29 08:48:26

0

如果您在保存捕獲的異常,你要想想回滾,取決於課程的應用需求。

+0

hibernate是否保存數據,雖然發生異常? – 2013-04-29 08:46:06

+2

@SanjayaLiyanage你怎麼看?如果你沒有休息,你的車會停下來嗎? – Eugene 2013-04-29 08:48:57

+0

@ Eugene是的,你是對的。如果發生異常,我將不得不使用Spring回滾。感謝 – 2013-04-29 08:58:15

相關問題