2012-03-19 82 views
4

我開始使用JPA,而且我總是對實體和它們的用法感到困惑,我讀了很多,但我仍然不太明白。 我閱讀了Oracle的文檔,但並沒有真正解釋它在事務中的角色。什麼是JPA實體?

什麼是JPA enities?他們是否真的爲每一行保存數據,我的意思是說,他們是否存儲了保存行數據的實例?或者他們只是映射數據庫的表,然後插入和刪除它們?

例如,如果我用這個:

entity.setUserName("michel"); 

然後堅持它,然後更改用戶名,並重新persisitig它(即合併IT)

這是否改變以前輸入的用戶名?或者它在數據庫中創建一個新的行?

回答

13

當您從代碼透視圖或表格中的行(基本上)思考數據庫視角時,實體與類的實例大致相同。

所以,它本質上是一個持久/持久的類實例。更改其上的值就像更改任何其他類實例上的值一樣。不同的是,您可以堅持這些更改,並且通常,類實例(實體)的當前狀態將根據數據庫匹配中的主鍵,覆蓋該實例(實體)在數據庫中的行的值類實例(實體)中的「id」或類似字段。

當然,這種行爲也有例外,但這通常是正確的。

0

這是一個模型。這是一個可以被持久化的域對象。不要過度思考。類似於Rails模型。請記住,模型(在這個範例中)是可變的!