JPA是什么?
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述实体对象-关系表的映射关系,并将实体对象持久化到数据库中的一套接口规范。
使用JPA有什么优势?
JPA 是 JCP(Java Community Process,是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。) 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
因为JPA是基于非侵入式的设计原则,因此可以很容易的和其他的框架或者容器集成。
基于JPA实现接口规范的最流行的框架之一就是Hibernate。
开始使用JPA
如果想使用JPA需要引用 spring-boot-starter-data-jpa。
引用该依赖后. 会自动加入相关依赖.
主要是以下3个主要的依赖
Hibernate:最受欢迎的JPA实现之一。
Spring Data JPA:使实现基于JPA的操作更加容易。
Spring ORMs:Spring Framework的核心ORM支持。
从开始看到现在, 你已经发现,springboot 就是一个spring套装合集。而不是什么新出现的技术。最核心的东西还是使用, 现有的框架进行开发。
想要使用JPA。就需要引用spring-data-jpa。所以,也就是需要spring的基础框架。学习的方式就变成。用好spring-data-jpa就可以使用springboot。
加入依赖之后, 拷贝上面的项目文件, 进行构建. 效果如下图.
配置文件.
配置application.properties
怎么知道配置都有什么呢? 我们根据springboot的规则,我们先找
并找到jpa的配置。找到一个。
并打开该文件。
你会发现这里引用了一系列的配置信息. 这里我们需要注意的是@AutoConfigureAfter 意思是, 我们在这个应用自动配置之后,要应用该自动配置。
然后我们找到HibernateJpaAutoConfiguration
根据框架的名称可以得知JpaProperties一定是一个配置文件。并且使用了@EnableConfigurationProperties。
打开JPaProperties, 我们可以看到
spring.jpa 就是我们需要在application.properties中进行配置项的前缀.
常用的功能有:
database 选择一个数据库类型.
database主要来自: org.springframework.orm.jpa.vendor.Database枚举对象.
show-sql (showSql) 是否显示SQL的日志.
如果使用hibernate就需要使用HibernateProperties
前缀就需要多加上一个hibernate变成 spring.jpa.hibernate
常用的配置有:
ddlAuto(ddl-auto): DDL模式。 这实际上是“hibernate.hbm2ddl.auto”属性的快捷方式。当使用嵌入式数据库并且未检测到任何模式管理器时,默认为“create-drop”。 否则,默认为“none”。
上面就是需要配置jpa的方法. 当然, 除了这些扩展配置, 还需要配置基础的datasource的配置. 在哪配置呢? 其实刚刚我们已经看到相关的配置了.
看下图:
这里在又引用了另外的一个自动配置类. 他在:org.springframework.boot.autoconfigure.jdbc。
这里就加载了DataSourceProperties的配置信息. spring.datasource
并看到我们上节说到的jdbc的配置.
看源代码的时候, 在不熟悉的时候, 需要把引用的都看一下, 都打开过个眼熟. 对全局有很好的理解效果.
编写配置信息, 这里使用了mysql进行做持久化的数据库层.
spring.thymeleaf.cache=false spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost/test?useUnicode=yes&characterEncoding=UTF-8&serverTimezone=GMT spring.datasource.username=root spring.datasource.password=xymiao spring.jpa.database = MYSQL spring.jpa.show-sql = true
配置完成.
加入main函数, 启动项目 : com.jkyuntu.springboot2.JPASpringBootApplication
正常情况下, 现在执行, 如果没有出现错误, 就说明你的基础环境就运行起来了. 但是为了测试是否真的运行成功, 需要继续完善代码.
加入对象实体类. User 使用注解@Entity
有了实体类, 就可以配置dao.
这里使用CrudRepository 的封装对象. 看下该接口的源码.
T为实体类, ID为主键类型. 例如: String, Integer
加入service
并实现该类:
这里使用主键的方式进行查询. 然后在Controller里面写入测试代码. 这里在开发的时候, 会用到另外的测试方法, 后续会进行详细讲解.
在页面中加入:
运行项目. 查看效果.
配置和简单的查询完成. 接下来会用一个案例首页轮播效果, 进行演示接下来的开发. 另外开一章了. 关注我. 了解更多.
如果有任何的问题, 或者遗漏, 请不吝指出. 一定改正. 共勉.
github地址送上:
https://github.com/xymiao/book-springboot2jingsui