整合JPA

本文介绍了如何在Spring Boot应用中整合JPA,并利用Hibernate作为底层实现。通过导入相关依赖,配置数据源和JPA设置,创建实体类并设置主键策略,最后展示了如何进行数据库操作,实现无需编写SQL的增删改查功能。
摘要由CSDN通过智能技术生成

整合JPA

使用Spring Boot框架做开发时,除了选择Mybatis作为ORM框架访问数据库,还可以选择另一款优秀的ORM框架Hibernate来访问数据库。我们可以使用Spring Data提供的JPA规范来使用Hibernate,JPA的底层默认实现就是Hibernate。

导入依赖

使用Hibernate框架,需要导入spring-boot-starter-data-jpa依赖

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

配置文件

在使用Hibernate框架之前,首先要配置数据源

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test_db?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: 12345
    driver-class-name: com.mysql.cj.jdbc.Driver

然后配置jpa下的hibernate的配置,比如以下配置设置了数据表的自动创建和后台打印sql语句

spring:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

创建实体类

编写对应数据表的实体类,需要以下几个注解:

  • @Entity:标注该类为实体类
  • @Table:设置数据表的名字
  • @Id:设置该属性为数据表的主键
  • @GeneratedValue:设置主键生成策略
  • @Column:设置属性对应的列的名字,不标注则用属性的名字
@Data
@Entity
@Table(name = "person")
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    @Column(name = "nik_name")
    private String nikName;
    private int age;
    private String address;
}

创建完实体类,如果此时启动项目,由于设置了spring.jpa.hibernate.ddl-autoHibernate属性为自动创建数据表,Hibernate会检查是否有对应的数据表,如果无则自动创建

在这里插入图片描述

查看数据库,对应的表已经被创建

在这里插入图片描述

操作数据

不同于Mybatis框架,Hibernate时一款全自动框架,他封装了许多方法,直接调用方法可以对数据进行增删改查操作,无需编写sql语句,这和Mybatis-Plus相似

创建Dao接口,继承JpaRepository接口,这个接口有两个泛型,分别传入对应的实体类的类型和主键的类型,JpaRepository接口会被Spring扫描为Bean,所以无需再标注@Repository注解

public interface PersonRepository extends JpaRepository<Person, Integer> {
}

注入自定义Dao接口,编写两个接口来测试,分别是按id查询和新增

@RestController
public class MyController {

    @Autowired
    PersonRepository personRepository;

    @RequestMapping("/query/{id}")
    public Person queryPerson(@PathVariable("id") int id) {
        Optional<Person> result = personRepository.findById(id);
        return result.orElse(null);
    }

    @RequestMapping("/add")
    public Person addPerson(Person person) {
        return personRepository.save(person);
    }
}

可以正常访问数据库

在这里插入图片描述

在这里插入图片描述

并且在后台打印了对应的Sql语句

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值