📜  springboot starter jpa - Java (1)

📅  最后修改于: 2023-12-03 15:20:13.777000             🧑  作者: Mango

Spring Boot Starter JPA

概述

Spring Boot Starter JPA 是使用 Spring Boot 快速开发 Java Web 应用程序时经常使用的依赖包之一。它提供了使用 Java Persistence API(JPA)访问关系型数据库的实现,极大地简化了与数据库的交互和管理。本文将介绍 Spring Boot Starter JPA 的使用和一些注意事项。

安装

Spring Boot Starter JPA 的依赖包可以通过 Maven 或 Gradle 在项目中引入。在 Maven 中,添加以下依赖到 pom.xml 文件中即可:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

在 Gradle 中,添加以下依赖到 build.gradle 文件中即可:

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
配置

默认情况下,Spring Boot Starter JPA 使用 H2 数据库作为开发模式下的默认数据库。实际情况下,我们往往需要连接到其他关系型数据库,例如 MySQL、PostgreSQL、Oracle 等。在 application.propertiesapplication.yml 文件中配置相关数据库信息即可:

spring:
  datasource:
    url: {数据库连接地址}
    username: {用户名}
    password: {密码}
    driver-class-name: {JDBC驱动}
  jpa:
    hibernate:
      ddl-auto: {数据表创建方式} # create: 每次运行时都创建表,update: 根据实体类自行进行更新,validate: 只校验实体类与数据表的对应关系,none: 不进行任何操作。
    show-sql: {是否显示SQL} # true: 显示 SQL,false: 不显示 SQL
    properties:
      hibernate:
        dialect: {数据方言} # 选择适合所用数据库的方言

例如,配置 MySQL 数据库信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect
使用

在 Spring Boot 应用程序中使用 Spring Boot Starter JPA 很容易,只需要简单地为实体类定义一个 JPA 注解即可将其映射到数据库中。例如,创建一个 User 类,使用 @Entity 表明它是一个实体类,使用 @Id@GeneratedValue 表明它的主键 id 将自动生成:

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private Integer age;

    // getters/setters
}

在这个例子中,User 类将映射到名为 user 的数据表中,其中包含三个字段:id、name 和 age。

使用 Spring Boot Starter JPA 的最简单方式是定义一个继承自 JpaRepository 的接口。例如,定义一个 UserRepository 接口,继承自 JpaRepository<User, Long>,表示 User 类的 id 字段类型是 Long 类型。然后,我们就可以在代码中使用该接口提供的方法来访问 user 数据表了:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

例如,我们可以使用 findByName 方法查询所有有给定名称的用户:

@Autowired
private UserRepository userRepository;

public List<User> getUsersByName(String name) {
    return userRepository.findByName(name);
}
参考资料