Java 平臺已經有標準的 API 以 JDBC API 的形式與數據庫系統一起工作。這些 API 非常擅長使用數據庫,并提供了從 Java 語言方便地與數據庫交互所需的方法。想學習java更多技能,建議參加java培訓,課程實時更新,緊跟市場和企業,讓你學到最新的java技能,提高市場競爭力。
但是,問題在于 Java 是一種面向對象的語言。 JDBC提供了數據庫交互的核心API,并不專注于將數據庫表的行列結構轉化為實體類。因此,需要在 JDBC API 之上工作的 API 層。持久性 API 或 JPA 緩解了兩種架構上不同的模型,目的是利用操作的流動性。 API 有助于將數據庫關系表表示為 POJO,并且可以通過 Java 代碼以類似的方式處理。核心 JDBC API 在后臺工作以處理復雜的通信和數據庫連接,而 JPA 使處理能夠根據 Java 語言的面向對象代碼完成。然而,關系數據庫和Java之間的數據映射并不是一件容易的事。
Java 持久性支持
在典型的關系數據庫中,信息以行列結構存儲。數據庫系統和 Java 應用程序的對象模型之間的數據交換很困難,因為 Java 將單個實體指定為由一組屬性和應用于它們的操作表示的類。因此,為了使兩種不同架構之間的行為不匹配,Java 程序員必須編寫多行代碼。這些代碼行有助于將數據庫表的行和列數據轉換為 Java 對象。但是,這些代碼行經常變得過于重復,導致源代碼充滿了樣板代碼。這是不可取的,并且違反了基本的面向對象的可重用性原則。盡管聰明的代碼可以減輕許多逆境,但這并不是一個簡單的解決方案。在java培訓中,有更加系統全面的課程,明確清晰的學習路線,學習起來既輕松,又高效。
第三方解決方案的出現為將數據庫數據映射到 Java 對象提供了喘息的機會,但它們并不標準。每個供應商的實現都大相徑庭。這一切都意味著這種情況需要 Java 平臺本身提供標準的持久性 API 庫。這導致了 Java Persistence API (JPA) 的引入,特別是在 Java 的面向對象領域模型和數據庫系統之間架起了一座橋梁。
專有解決方案
數據映射器
數據映射器基本上是 Martin Fowler 在其 2003 年的企業應用程序架構模式一書中提出的架構模式。它提供了解決對象關系問題的部分方法。映射器有助于創建一種策略,該策略屬于普通 JDBC 和全功能對象關系映射解決方案之間的類別。在這里,應用程序開發人員使用數據映射器方法創建原始 SQL 字符串以將數據庫表映射到 Java 對象。有一個流行的框架使用這種 SQL 數據庫和 Java 對象之間的映射技術,稱為 Apache iBatis。 Apache iBatis 項目現在已被宣布為非活動狀態。但是,Apache iBatis 的原始創建者已將該項目轉移到 MyBatis 并正在積極開發中。
與使用 MyBatis 等數據映射器框架的其他對象關系問題解決方案不同,我們可以完全控制與數據庫的 SQL 事務。它是一個輕量級的解決方案,不承擔成熟 ORM 框架的開銷。但是,數據映射器存在問題。對對象模型所做的任何更改都會對數據模型產生影響。因此,必須直接對 SQL 語句進行重大更改。該框架的簡約特性可幫助開發人員根據需要合并新的更改和修改。數據映射器在我們需要最小框架、顯式 SQL 處理以及對開發人員修改進行更多控制的情況下特別有用。對java感興趣的同學,可以考慮參加java培訓學習,課程會更系統全面一點,能學到有用的的知識,讓你少走彎路。
JDBC
JDBC(Java 數據庫連接)是 Microsoft 的 ODBC(對象數據庫連接)規范的 Java 特定版本。 ODBC 是用于連接來自任何語言或平臺的任何關系數據庫的標準。 JDBC 提供了與 Java 語言類似的抽象。 JDBC 使用 SQL 與數據庫進行交互。開發人員必須根據后端數據庫的語法規范編寫 DDL 或 DML 查詢,但使用 Java 編程模型處理它們。 Java 源代碼和 SQL 語句之間存在緊密耦合。我們可以使用原始 SQL 語句并根據需要靜態地操作它們。由于其靜態性質,很難合并更改。此外,SQL 方言因數據庫供應商而異。 JDBC 硬連線到數據庫而不是 Java 語言的對象模型。因此,使用它很快就會覺得很麻煩,尤其是當來自 Java 源代碼的數據庫交互增加時。但是,JDBC 是 Java 中對數據庫持久性的主要支持,并構成了高級框架的基礎。
EJB
帶有 J2EE 的 Enterprise Java Bean (EJB) 以實體 bean 的形式在 Java 持久性領域帶來了一些新變化。 這個想法是將開發人員與直接干預數據庫持久性的復雜性隔離開來。 它引入了一種基于接口的方法。 有一個專門的 bean 編譯器來生成持久性、事務管理和業務邏輯委托的實現。 專門的 XML 部署描述符用于配置實體 bean。 問題在于 EJB 并沒有簡化事情,而是包含了很多復雜性。 結果,盡管隨后進行了許多改進,例如引入了 Enterprise JavaBeans 查詢語言 (EJB QL),但它很快就失去了人氣。通過java培訓學習,有專業導師帶你學習系統全面的課程,還有實操項目的訓練,真正將理論知識應用到實踐中去,獲得項目實踐經驗。