SpringBoot - 使用Spring Data JPA操作数据库

本文介绍了SpringBoot如何使用Spring Data JPA操作数据库,详细讲解了JPA和Spring Data的基本概念,安装配置步骤,以及如何创建实体类和数据库访问层。文章还探讨了方法命名规则,并展示了多数据源的配置与使用,包括数据源配置、JPA配置、Repository创建以及测试运行。
摘要由CSDN通过智能技术生成

一、基本介绍

1,什么是 JPA

JPA 是 Java Persistence API 的简称,中文名 Java 持久层 API。
我们都知道 Hibernate 框架是一个 ORM 框架,而 JPA 则是一种 ORM 规范。JPA 和 Hibernate 的关系就像是 JDBC 与 JDBC 驱动的关系,即 JPA 制定了 ORM 规范,而 Hibernate 是这些规范的实现。因此从功能来说,JPA 相当于 Hibernate 的一个子集。
事实上,是先有 Hibernate 后有 JPA,JPA 规范的起草者也是 Hibernate 的作者。

2,什么是 Spring Data
Spring Data 是 Spring 的一个子项目,致力于简化数据库访问,通过规范的方法名称来分析开发者的一同,进而减少数据访问层的代码量。
Spring Data 不仅支持关系型数据库,也支持非关系型数据库。
Spring Data JPA 可以有效地简化关系型数据库访问代码。

3,安装配置
(1)首先编辑 pom.xml 文件,添加相关依赖:
spring-boot-starter-data-jpa:提供对 Spring Data JPA 的支持
mysql-connector-java:MySQL 数据库驱动
druid:Druid 是阿里巴巴开发的号称为监控而生的数据库连接池,也是目前最好的数据库连接池。

<!-- Spring Data JPA 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
 
<!-- 数据库驱动依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
 
<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

(2)接着在 application.properties 中配置数据库基本信息以及 JPA 相关配置:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/hangge?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=hangge1234
#是否在控制台打印JPA执行过程生成的SQL
spring.jpa.show-sql=true 
#表示JPA对应的数据库是MySQL
spring.jpa.database=mysql
#表示在项目启动时根据实体类更新数据库中的表
spring.jpa.hibernate.ddl-auto=update
#表示使用的数据库方言是MySQL57Dialect
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect

二、基本用法

1,创建实体类
首先我们创建 Book 实体类(注意:由于我们前面的 JPA 配置,数据库不需要预先创建对应的表,程序启动后会自动生成)
代码说明:
@Entity 注解表示该类是一个实体类,在项目启动时会根据该类自动生成一张表,表的名称即 @Entity 注解中的 name 值,如果不配置 name,默认表名为类名。
所有的实体类都要有主键,@Id 注解表示该属性是一个主键,@GeneratedValue 注解表示主键自动生成,strategy 则表示主键的生成策略。
默认情况下,生成的表中字段的名称就是实体类中的属性的名称,通过 @Colume 注解可以定制生成的字段的属性,name 表示该属性对应的数据库表中的字段名称,nullable 表示该字段非空。
@Transient 注解表示在生成数据库中的表时,该属性被忽略,即不生成对应的字段。

@Entity(name = "t_book")
@Setter
@Getter
@NoArgsConstructor
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
 
    @Column(name = "book_name", nullable = false)
    private String name;
    private String author;
    private Float price;
 
    @Transient
    private String description;
}

2,创建数据库访问层
接着创建 BookDao 接口,继承 JpaRepository,代码如下:
代码说明:
自定义的 BookDao 继承自 JpaRepository。JpaRepository 中提供了一些基本的数据操作方法,有基本的增删改查、分页查询、排序查询等。
第 1、2 个查询方法我们使用的是既定的方法命名规则。在 Spring Data JPA 中,只要方法的定义符合既定规范,Spring Data 就能分析出开发者的意图,从而避免开发者自定义 SQL。
第 3 个方法我们使用原生的 SQL 进行查询(nativeQuery = true 表示使用原生的 SQL 查询)
第 4 个方法使用默认的 JPQL 语句。JPQL 是一种面向对象表达式语句,可以将 SQL 语法和简单查询语义绑定在一起。使用这种语言编写的查询是可移植的,可以编译成所有主流数据库服务器上的 SQL。JPQL 与原生 SQL 语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性(类似于 Hi

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值