JPA與ORM以及Hibernate


 

有沒有辦法讓程序員徹底拋棄書寫SQL思想,完全的使用面向對象思想開發軟件呢?

需要一種可行的ORM框架。

什么是ORM

不同的數據庫使用的SQL語法不同,比如PL/SQL(Oracle)和T/SQL(SQL SERVER);

同樣的功能不同的數據庫有不同的實現方式

程序過分依賴SQL對程序的移植性擴展維護等帶來很大的麻煩。

ORM框架包括Entity EJB、Hibernate、iBATIS、TopLink等,很多公司還開發了自己的ORM框架來解決項目的持久化。然而每種ORM框架都有自己的語法,他們之間不能直接通用。

 

 

對開發者而言,很多數據庫持久化的的操作都是類似的,項目中采取的框架不同會造成代碼的重復性。那么有沒有辦法來改善這種情況呢?

回想JDBC可以作為為多種關系數據庫提供相同的訪問方式,使開發人員方便於編寫數據庫應用程序。那么是不是可以有一種規范可以像JDBC一樣提供不同ORM框架的統一規范。

Sun公司為了簡化現有Java EE和Java SE應用的對象持久化的開發工作整合ORM技術,結束現在Hibernate、iBATIS、TopLink等ORM框架各自為營的局面,提出了新的JPA ORM規范。

1)       JPA為POJO提供持久化標准規范。

2)       JPA的使用:

    Hibernate與TopLink以及OpenJpa都提供了JPA的實現。

3)       JPA主要技術:
     JPA的總體思想和現有Hibernate、TopLink、JDO等ORM框架大體一致。總的來說,JPA包括以下三方面的技術:

      A. ORM映射元數據:JPA通過注解XML描述映射關系,並將運行中的實體對象持久化到數據庫中。

      B. JPA持久化API:使用面向對象的思想,操作實體對象,進行增刪改查的操作。至於怎么操作,由框架思考這件事。這必將大大的節省了開發時間,提    高了開發效率。

      C.  查詢語言:使用面向對象的思想避免了同程序的SQL語句產生交集

4)       JPA與Hibernate
     注意,前面說過了,JPA是統一了各種ORM框架的接口,所以說,可以把JPA理解為它並不是新的ORM框架,是接口,是規范,是工具。就像JDBC不是數據庫一樣,也沒有辦法代替數據庫。同理,JPA也不是ORM框架,我們可以透過JPA使用各種ORM,實現各項目之間的移植性,這是做到低耦合、可擴展的程序設計。

HibernateORM框架,它實現了JPA的規范。

實現JPA接口也並不意味着可以替代Hibernate,Hibernate的索引功能,緩存功能並沒有相應的接口,所以有些時候還是需要Hibernate的。但是!凡是JPA能實現的功能都用JPA來實現,以此來減少框架之間的耦合性

PS:本人也在不斷的學習中,這是在翻看了各種Hibernate,ORM,JPA資料后做出的總結,如果有不恰當的地方歡迎指出,大家互相交流,共同進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM