本篇文章是SpringBoot 系列文章的第八篇文章,由于本人工作原因,中断了一段时间,接下来的一段时间里,将陆续更新本系列的其他文章,回归Spring Boot技术体系,记录本人学习和使用Gradle构建spring Boot工程的过程、技术要点以及在过程中遇到的各种问题,欢迎广大程序猿共同关注学习,也欢迎大家提出自己的宝贵意见,知识在交流中碰撞,技术在交流中提升!
Spring Data JPA
是Spring Data系列的一部分,可以轻松实现基于JPA的数据持久化操作,旨在通过提供通用接口减少持久层的编码量,提高代码质量,降低代码和SQL的维护成本,避免SQL注入等安全风险。作为开发人员只需编写Repostitory接口,Spring将自动提供实现数据库读写
Repository的概念
在Spring中有Repository的概念,repository原意指的是仓库,即数据仓库的意思。Repository居于业务层和数据层之间,将两者隔离开来,在它的内部封装了数据查询和存储的逻辑。这样设计的好处有两个:
- 降低层级之间的耦合:更换、升级ORM引擎(Hibernate)并不会影响业务逻辑
- 提高测试效率:如果在测试时能用Mock数据对象代替实际的数据库操作,运行速度会快很多
Repository和DAO的区别
DAO是传统MVC中Model的关键角色,全称是Data Access Object。DAO直接负责数据库的存取工作,乍一看两者非常类似,但从架构设计上讲两者有着本质的区别:
Repository蕴含着真正的OO概念,即一个数据仓库角色,负责所有对象的持久化管理。DAO则没有摆脱数据的影子,仍然停留在数据操作的层面上。Repository是相对对象而言,DAO则是相对数据库而言,虽然可能是同一个东西 ,但侧重点完全不同。
接下来本篇文章将针对使用CrudRepository实现Repository数据库读写:
在Gradle 的build.gradle配置文件中追加一下jpa依赖:'org.springframework.boot:spring-boot-starter-data-jpa'
dependencies {
compile(
'org.springframework.boot:spring-boot-starter-actuator',
'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-data-jpa',
'org.springframework.boot:spring-boot-devtools',
'mysql:mysql-connector-java'
)
testCompile('org.springframework.boot:spring-boot-starter-test')
}
对于使用maven的朋友可以使用一下配置:
<!-- spring boot 父节点依赖,
引入这个之后相关的引入就不需要添