差分

2015-10-06 22 views
3

Hibernate的Query類有setter方法的任何類型的原語參數如setStringsetBooleansetLong等的,但它也有其接收Object和可以取代其它所有setter方法setParameter方法。差分

由於它們不被棄用,在性能方面使用特定類型參數是否有優勢? setParameter應該只用於自定義對象嗎?

回答

5

根據粗略閱讀的Queryhere的實施。

在性能方面使用特定類型參數有什麼優勢嗎?

是的,好像你直接調用setParameter函數,hibernate將需要「猜測」對象的類型。但是,它看起來像那些方法(setString,setBoolean等)只是一個方便的方法來設置參數。因爲最終這些功能會調用功能setParamater(int,Object,Type)。與setParameter函數相同。

setParameter應該只用於自定義對象嗎?

沒有必要。我的意思是,你仍然可以使用Integer或其他包裝類(Boolean,Float等)。只是這樣,還有額外的操作,hibernate需要檢查值的類型並正確處理。