1. jpa是什麼,和hibernate類似
1、JPA全稱Java Persistence API. JPA通過JDK 5.0註解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到資料庫中。
JPA的主要目標之一就是提供更加簡單的編程模型:在JPA框架下創建實體和創建Java 類一樣簡單,沒有任何的約束和限制,只需要使用 javax.persistence.Entity進行注釋,JPA的框架和介面也都非常簡單,沒有太多特別的規則和設計模式的要求,開發者可以很容易地掌握。JPA基於非侵入式原則設計,因此可以很容易地和其它框架或者容器集成。
2、Hibernate是JPA的具體實現。但是Hibernate出現的時間早於JPA。JPA是SUN在持久化框架發展起來後提出的規范。Hibernate從3.2開始,就開始兼容JPA。Hibernate3.2獲得了Sun TCK的JPA(JavaPersistence API) 兼容認證。
Hibernate作為JPA的一種實現,jpa的註解已經是hibernate的核心,hibernate只提供了一些補充,而不是兩套註解。hibernate對jpa的支持夠足量,在使用hibernate註解建議使用jpa。
(1)jpa自動創建表指定存儲引擎擴展閱讀
JPA查詢能力
JPA的查詢語言是面向對象而非面向資料庫的,它以面向對象的自然語法構造查詢語句,可以看成是Hibernate HQL的等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴展,它是針對實體的一種查詢語言,操作對象是實體,而不是關系資料庫的表,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
高級特性
JPA 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的復雜關系,這樣的支持能夠讓開發者最大限度的使用面向對象的模型設計企業應用,而不需要自行處理這些特性在關系資料庫的持久化。
2. Spring Data Jpa新增和更新的問題。
可以根據ID做新增或者update,你在實體上打JPA註解了嗎?
主鍵上打@Id了嗎