About Spring Data JPA
1.Spring Data JPA
Spring Data JPA是Spring Data这一个大家族中的一部分,它使得实现基于JPA的存储(repository)变得更加容易。Spring Data JPA这个模块,增强支持了基于JPA的数据库访问层。Spring Data JPA构建的Spring-powered的驱动应用程序,使得数据访问变得更加简单。
2.Spring Data JPA基本功能
实现应用程序的数据访问层,一直都是很麻烦的问题。为了执行简单的查询、分页和审计,需要编写太多冗余的模版代码。Spring Data JPA的出现,就是通过减少实际工作中的工作量来显著改进了数据访问层的实现。作为开发人员,编写repository接口,包括自定义的方法,Spring都自动提供了实现。
Features
Sophisticated support to build repositories based on Spring and JPA
支持基于Spring和JPA构建数据库
Support for Querydsl predicates and thus type-safe JPA queries
支持查询谓词,以及类安全的JPA查询
Transparent auditing of domain class
域类的透明审计
Pagination support, dynamic query execution, ability to integrate custom data access code
支持分页、动态查询,可以继承自定义数据库访问
Validation of
@Query
annotated queries at bootstrap time支持验证@Query的注释查询
Support for XML based entity mapping
支持基于XML的实体映射
JavaConfig based repository configuration by introducing
@EnableJpaRepositories
.通过引入@EnableJpaRepositories,基于JavaConfig的repository的配置
3.核心接口
Repository接口 :
1 | public interface Repository<T,ID extends Serializable>{ |
在这个接口中,定义了所有repository的类型。需要传入两个参数,一个是实体(采用泛型T),另一个则是实体中的ID的数据类型(Integer/String/…)
最近,在项目中,使用到的是JpaRepository。这里先讲讲JpaRepository
1 | public interface JpaRepository<T,ID extends Serializable> extends PagingAndSortingRepository<T,ID>{ |
其实,从方法名上基本都可以理解它们的功能和操作,只需调用即可。也可以进行重写和实现。传入需要的参数或者需要的返回值类型,见仁见智,根据实际情况编写不同的功能。
举个例子来说:
对于实体(Student)
1 | @Entity |
这里简单的举了一个例子,是学生的实体类,有一个基本的变量。为什么会有@Entity,@Data…诸如此类的注解?这是从hibernate就有的注解,主要的功能是为了将映射变得更加的容易。
下一篇就@Annotation的知识补充上
我们再把Student实体数据访问层的Repository补上
1 |
|
完成了数据访问层(Repository)之后,就可以编写Service和ServiceImpl的实现了。在Impl中只需将Repository注入(@AutoWired)即可完成对应的功能。
简单来说
JpaRepository简化了在SSM框架中,所需要的映射文件的配置:
例如:spring-dao.xml,mapper/StudentDao.xml
SQL语句的编写:
例如:
1 | <mapper namespace="cn.inc.dao.StudentDao"> |
虽然说JpaRepository简化了很多在SSM框架中的映射,SQL编写,注入,组件等问题。但其实对于刚入门的我来说,在工作效率上提高了许多,但是感觉是走了很多的捷径去完成了工作而已,一些基础知识和底层的原理并没有深入的了解。这也是为什么要开启学习笔记的原因。
今天就更新到这里,感谢。