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支持,以便提供更加优秀的开发条件.