Springboot整合四之Springboot整合JPA

本文详细介绍如何在Spring Boot项目中整合JPA实现快速数据库操作。从创建项目、配置数据库到编写实体类、DAO接口和服务层,最后通过Controller展示查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JPA是什么

首先,我们说说JPA是什么?

JPA(java persistence api),它并不是一个框架,而是一组规范。我觉得对于任何一个开发人员来说,理解“规范”这个词应该不在话下。其中,Hibernate就实现了这个规范,而且呢是相当成功的(其实TopLink和OpenJPA也都实现了JPA规范,不过它们被Hinernate的光环笼罩了)。所以呢,当我们说到JPA的时候,好多人首先想到的就是Hibernate。

今天呢,我们就来说说Springboot整合JPA

1、创建工程并添加依赖

2、在yml文件中进行配置

spring:
  devtools:
    restart:
      enabled: false
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    hikari: # springboot 2.0 整合了hikari ,据说这是目前性能最好的java数据库连接池
      username: root
      password: 123
  jpa:
    hibernate:
      ddl-auto: update  # 第一次建表create  后面用update,要不然每次重启都会新建表
    show-sql: true

3、创建一个entity

package com.space.jpa.bean;
 
import lombok.Data;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
 
/**
 * @author zhuzhe
 * @date 2018/6/3 23:27
 * @email 1529949535@qq.com
 */
@Data
@Entity  // 该注解声明一个实体类,与数据库中的表对应
public class User {
 
    @Id   // 表明id
    @GeneratedValue   //  自动生成
    private Long id ;
 
    private String name ;
}

4、创建DAO

package com.space.jpa.dao;
 
import com.space.jpa.bean.User;
import org.springframework.data.jpa.repository.JpaRepository;
 
/**
 * @author zhuzhe
 * @date 2018/6/3 23:32
 * @email 1529949535@qq.com
 */
@Component
public interface UserDAO extends JpaRepository<User,Long> {
    /*
    * 我们在这里直接继承 JpaRepository
    * 这里面已经有很多现场的方法了
    * 这也是JPA的一大优点
    *
    * */
}

在这里我直接截图,我们可以看看JpaRepository中的一些方法

我们可以直接使用这些方法,包括其父类的好多方法。是不是很方便啊。

5、Service

package com.space.jpa.service;
 
import com.space.jpa.bean.User;
 
import java.util.List;
/**
 * @author zhuzhe
 * @date 2018/6/3 23:38
 * @email 1529949535@qq.com
 */
public interface UserService {
    List<User> findAll();
}

 

package com.space.jpa.service.impl;
 
import com.space.jpa.bean.User;
import com.space.jpa.dao.UserDAO;
import com.space.jpa.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
/**
 * @author zhuzhe
 * @date 2018/6/3 23:38
 * @email 1529949535@qq.com
 */
@Service
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserDAO userDAO;
 
    @Override
    public List<User> findAll() {
        // 这里我们就可以直接使用 findAll 方法
        return userDAO.findAll();
    }
}

6、Controller

package com.space.jpa.controller;
 
import com.space.jpa.bean.User;
import com.space.jpa.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.List;
 
/**
 * @author zhuzhe
 * @date 2018/6/3 23:43
 * @email 1529949535@qq.com
 */
@RestController
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @GetMapping("/list")
    public List<User> findAll() {
        return userService.findAll();
    }
}

7、进行测试

我们启动项目,可以看到日志打印

数据表会自动创建,此时我们查看数据库

确实已经自动创建了数据表。

我们给表里添加两条数据,然后通过浏览器访问findAll接口:

得到结果如下:

源码:https://github.com/zhuzhegithub/springboot-jpa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值