Spring Data 項目的目的是爲了簡化構建基於 Spring 框架應用的數據訪問計數,包括非關係數據庫、Map-Reduce 框架、雲數據服務等等;另外也包含對關係數據庫的訪問支持。java
<!-- spring data jpa 的maven座標 --> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.0.7.Final</version> </dependency>
Spring中的applicationContext.xml中關於jpa的配置:mysql
首先引入名稱空間:程序員
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
<!-- 描述spring整合JPA --> <jpa:repositories base-package="dao接口以及實現類所在的包" /> <!-- spring整合jpa配置,jpa管理工廠 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <!-- 鏈接池 --> <property name="dataSource" ref="配置的鏈接池"/> <!-- 註解掃描domain類 --> <property name="packagesToScan" value="實體類domain所在的包" /> <!-- jpa採起的底層框架開發,這裏使用的是hibernate框架 --> <property name="persistenceProvider"> <bean class="org.hibernate.ejb.HibernatePersistence" /> </property> <!-- jpa的設置 --> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="generateDdl" value="true" /> <property name="database" value="MYSQL" /> <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <!-- <property name="showSql" value="true"/> --> </bean> </property> <!-- jpa的一些高級特性 --> <property name="jpaDialect"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> </property> <property name="jpaPropertyMap"> <map> <entry key="hibernate.query.substitutions" value="true 1,false 0" /> </map> </property> </bean> <!--配置 jpa事務管理器 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"></property> </bean> <!-- 自動事務管理 --> <tx:annotation-driven transaction-manager="transactionManager" />
其中jpa具備的一些參數:spring
當使用了spring data jpa去集成hibernate等框架時候,能夠採用dao接口繼承jpa提供的接口的方式進行CRUD操做,而不須要本身編寫實體類去實現,spring會在執行的以後,自動生成實現類,從而極大的簡化了操做.sql
如下是dao繼承的接口編寫規則:數據庫
上述規則描述中,標綠的爲經常使用接口.當dao接口繼承了JpaRepository後,就能夠在servie類彙總,使用 api
這一系列的方法. app
而當dao接口繼承了JpaSpecificationExecutor接口後,即可實現以下一系列方法. 框架
同時,繼承了JpaSpecificationExecutor接口後,還能夠自定義方法,以及按照規則編寫方法. dom
@Query("HQL語句")
@Modifying
注:
JPQL查詢方法編寫規則:
spring data jpa是一種很是好的orm規範,雖然目前只有有hibernate,OpenJPA,TopLink和EclipseJPA等持久化層框架實現,但發展空間很是大,而且能極大的簡化程序員的操做,但願將來有更多的持久化層能對jpa支持,以便提供更加優秀的開發條件.