setParameter与hibernate中设置特定类型参数的区别

Ale*_*rin 3 java hibernate

Hibernate的Query类具有任何类型的原始参数(如setString setBoolean setLongetc)的设置器,但它也有一个setParameter接收Object并可替换所有其他setter的方法.

由于它们不被弃用,在性能方面使用特定类型参数是否有任何优势?应该setParameter只用于自定义对象?

kuc*_*ang 6

根据该实施的粗略读Query在这里.

在性能方面使用特定类型参数是否有任何优势?

是的,就像你直接调用该setParameter函数一样,hibernate将需要"猜测"对象的类型.但是,它看起来像那些方法(setString,setBoolean等)只是一个方便的方法来设置参数.因为,最终,这些函数会调用函数setParamater(int,Object,Type).这与setParameter功能相同.

应该setParameter只用于自定义对象?

不必要.我的意思是,你仍然可以使用一个Integer或其他包装类(Boolean,Float,等).只是,hibernate还需要执行额外的操作来检查值的类型并正确处理它.