一、JPA简介
JPA(java persistence api)并不是一个框架,而是一组规范。Hibernate、TopLink、OpenJPA都实现了JPA规范,不过Hinernate最成功)。所以当说到JPA的时候,好多人首先想到的就是Hibernate。
二、SpringBoot 整合 JPA
1、创建工程并添加依赖
2、在application.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,要不然每次重启都会新建表
# 输出执行sql
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 ;
//getter & setter 方法略
}
4、创建DAO
编写Dao接口来操作实体类对应的数据表(Repository)来操作实体类对应的数据表(Repository)
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
//继承JpaRepository来完成对数据库的操作
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接口:
得到结果如下:
这样,我们就整合完成了。是不是 So Easy!!!