JPA是一種規範,它簡化了現有持久化的開發,而且充分吸取了Hibernate、TopLInk、JDO等框架。SpringData JPA是全自動框架,不須要本身寫sql,固然也能夠本身寫sql實現。而自動生成sql這點是優勢,也是缺點,由於生成的sql可讀性差,並且一些業務好比執行邏輯刪除等仍是須要本身來實現sql。
sql
可持久化Java對象。JPA可以直接持久化複雜的Java對象,並可以使用JPQL語言進行復雜的查詢。JPQL是JPA專用的查詢語言,是相似於SQL的面向對象的查詢語言。數據庫
使用簡單。JPA使用註釋(Annotation)定義Java對象與關係數據庫之間的映射,而傳統的ORM多使用xml配置文件。JPA使用起來比ORM要方便。使用JPA不用關注底層使用什麼數據庫。編程
規範標準化。JPA是JCP組織發佈的,是Java官方規定的統一的API。目前已經有多種框架實現JPA標準。使用了JPA的系統能夠自由選擇遵循JPA標準的框架,並可以自由更換。緩存
事務性、大數據量。JPA底層使用關係數據庫進行存儲,所以具有關係數據庫的特色,例如事務性、數據完整性、併發訪問、大數據量等。併發
與其餘持久化技術相比,JPA有很大的技術優點。表列出了JPA與其餘持久化技術的比較。app
SQL語句的編寫工做量較大,尤爲是字段多、關聯表多時,更是如此,對開發人員編寫SQL語句的功底有必定要求框架
SQL語句依賴於數據庫,致使數據庫移植性差,不能隨意更換數據庫ide
當但願對象的持久化對應用程序徹底透明是,不適合使用Mybatis大數據
當數據庫有移植需求或須要支持多種數據庫時,不適合使用Mybatisspa
緩存使用不當,容易產生髒數據