2015-10-20 94 views

回答

29

查詢

查詢指JPQL/HQL查詢具有類似於SQL語法通常用於執行DML語句(CRUD操作)。

在JPA中,您可以使用entityManager.createQuery()創建查詢。您可以查看API瞭解更多詳情。

在Hibernate中,您使用session.createQuery()

NativeQuery

本地查詢是指實際的SQL查詢(指實際的數據庫對象)。這些查詢可以直接執行SQL語句在數據庫中使用數據庫客戶端。

JPA:entityManager.createNativeQuery() Hibernate(非JPA實現):session.createSQLQuery()

NamedQuery

類似於如何定義常量。 NamedQuery是通過給它起一個名字來定義查詢的方式。你可以在休眠映射文件中定義它,或者在實體級別使用註釋。

TypedQuery

TypedQuery爲您提供了一個選項,當您創建一個查詢,因此任何操作之後並不需要顯式轉換到預期的類型提到的實體類型。而正常的Query API不會返回您期望的對象的確切類型,而您需要投射。

+0

在不同的查詢之間是否有任何性能,吞吐量,內存消耗,加載應用服務器差異?我認爲NamedQuery的內存消耗大於查詢,但我不能說哪裏是查詢的限制選擇贊成一個或另一個。你能解釋一下嗎?提前致謝 – Joe