SpringData作用
Spring Data 作为SpringSource的其中一个父项目, 旨在统一和简化对各类型持久化存储,而不拘泥于是关系型数据库还是NoSQL 数据存储。
主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算机数据服务。
支持基于关系型数据库的数据服务,如OracleRAC等。
对于拥有海量数据的项目,可以用SpringData来简化项目的开发,就如Spring Framework对JDBC,ORM的支持一样,SpringData会让数据访问变得更加方便。
JPA特点
JPA是Java persistence API的简称,中文名Java持久层API,是jdk5.0注解或xml描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
springDataJpa特点
基于spring和JPA构建存储卡的复杂支持
分页支持,动态查询执行,集成自定义数据访问代码的能力
@query在引导时验证带注释的查询
支持基于xml的实体映射
基于JavaConfig的存储库配置介绍@EnableJpaRepositories
JPA的事务特性
JPA本身并不提供任何类型的声明式事务管理。如果在依赖注入容器之外使用JPA,事务处理必须由开发人员编程实现。
Spring Data JPA对所有默认方法都开启了事务支持,且查询类事务默认启用readOnly=true属性。
从源码分析可以看出,SimpleJpaRepository在类级别定义了@Transactional(readOnly = true),而在和save、delete相关的操作重写了@Transactional属性,此时readOnly属性是false,其余查询操作readOnly仍然为true。
对于测试的代码,事物默认回滚。