statement差異 - 為什麼使用JPA而不是直接在Java文件上編寫SQL查詢(即直接寫入JDBC)?




pstmt executequery (4)

JPA在我的文件中編寫純SQL的真正好處是什麼?

以下是一些好處:

  • JPA允許您避免在SQL的數據庫特定方言中編寫DDL。 相反,您可以在XML中編寫“映射”,或使用Java註釋。

  • JPA允許您避免在SQL的數據庫特定方言中編寫DML。

  • JPA允許您在沒有任何DML語言的情況下加載和保存Java對象和圖形。

  • 當您確實需要執行查詢時,JPQL允許您根據Java實體而不是(本機)SQL表和列來表達查詢。

一般來說,JPA比JDBC + SQL +手寫映射更簡單,更清晰,勞動強度更低。 數據模型越複雜,它就越有益。

但是,如果性能是最重要的考慮因素,JPA確實會通過在應用程序和數據庫之間添加層來阻礙性能。 如果您的應用程序要求您廣泛手動優化本機數據庫查詢和模式以最大限度地提高性能,那麼JPA可能不太合適。

如果你在同一個應用程序中更好地處理 Java,JDBC和SQL,那麼JPA可能也不適合你,而不是讓ORM處理凌亂的細節。 (但如果你是,你可能是少數......)

我一直在讀幾篇文章什麼是JPA (Java Persistent API)和哪些供應商支持它(DataNucleus,JBoss Hibernate等)

我沒有ORM(對象關係映射)的經驗。

到目前為止我所做的是使用DTO和DAO編寫自己的數據庫類。 到目前為止,我對我所擁有的內容感到高興,但我想知道為什麼人們使用JPA而不是包含SQL的Java文件

對我來說,我覺得寫DAO課程就像下面這樣。

public class DAOUsers {
     public void insertNewUser(DTO DtoUser) {
           String query = "INSERT INTO users(username, address) " +
                          "VALUES(DtoUser.username , DtoUser.address)";
           Executor.run(query);
     }

}

我已經了解到JPA使用JPQL,Java持久查詢語言,它對實體對象而不是直接使用db表進行操作。

我的理解(糾正我,如果我錯了)是這裡的實體對象和我的DTO對像一樣(有點像bean嗎?)

但無論如何...... JPA真正有益於在我的文件中編寫純SQL嗎? 看起來像使用JPA所需的註釋並使SQL不可讀對我來說不是很有吸引力..

如果您需要更多說明,請告訴我,我是這個主題的新手,並希望聽到一些意見。


為什麼使用JPA而不是直接在Java文件上編寫SQL查詢(即直接寫入JDBC)?

某些項目要求工程師更多地關注對像模型,而不是用於訪問數據存儲的實際SQL查詢。 這個問題實際上可以解釋為

為什麼要使用ORM框架?

在不同的環境中可以有不同的答案。

大多數項目都可以從擁有域模型中受益,持久性是第二個問題。 使用JPA(實現)或大多數其他ORM框架,可以將所有實體(即數據庫中的表)建模為Java中的類。 此外,還可以將行為嵌入到這些類中,從而實現行為豐富的域模型。 此模型中的實體可以有多種用途,包括替換DTO以跨層傳輸數據的目的。

也就是說,有些地方的ORM框架可能不是直接適應問題的,特別是當數據模型已經建立時,或者正在使用遺留系統時,將數據庫表映射到Java類是一項非常重要的工作。 在某些情況下,如果需要絕對調整ORM框架生成的SQL,那麼ORM框架通常是不合適的。

相關問題

  1. Java EE架構 - 在使用像JPA 2這樣的ORM時,仍然建議使用DAO嗎?
  2. 使用ORM還是純SQL?
  3. ORM與手動編碼數據訪問層

如果操作正確,您可以使用JPA實現(如hibernate)將SQL查詢直接映射到java對象。 我最近做了一個項目,我有一個POJO和3或4個註釋和一點點設置代碼來獲取存儲過程並將其直接映射到對象列表(POJO類類型)。 這對我來說是JPA力量的一部分。

如果您使用它就像直接使用SQL + JDBC那麼我不知道有什麼優勢。

這裡有一篇關於JPA優勢的文章。

希望這可以幫助。


眾所周知,對像是我們生活中最重要的東西之一,在編程對像中是簡化任何問題的簡單方法....如果對象可用,那麼為什麼我們使用整個東西而不是那個小部分事物意味著對象....

  • 如果您在企業應用程序中手動編寫SQL語句,則需要花費大量的開發時間來更新和維護持久層。

在持久性方面,==>不再需要JDBC API來進行結果集或數據處理。 ==>它有助於減少代碼行,&&&&&&==>它將我們的應用程序從基礎SQL數據庫和sql方言中抽像出來。 切換到其他SQL數據庫需要在Hibernate配置文件中進行少量更改(一次寫入/隨處運行)。





jpa