itbear
V1
2021/10/13阅读:76主题:萌绿
Spring JPA Get Start
什么是JPA?
JPA(Java Persistence API)是JDK 5.0新增的持久层协议,用于通过注解或XML的方式来描述对象和关系型数据里面的表映射关系,并将Java项目运行时的实体对象,持久化到数据库中。
JPA分类
-
在 javax.persistence 的包下面定义了一套 API
标准接口,用来操作实体对象,执行CRUD
操作。 -
定义了一套基于对象的 SQL: Java Persistence Query Language(JPQL)
,可以使用面向对象的方式去查询数据,而不是面向数据库的查询去查询数据 -
ORM(Object/Relational Metadata)
对象注解映射关系,JPA可以 直接通过注解的方式来表示 Java 的实体对象及元数据对象和数据表之间的映射关系,框架将实体对象与一种Session会话技术
进行关联,通过操作Session
中不同实体的状态,从而实现持久化数据到数据库中的操作。
Spring Data JPA
Spring Data JPA
则是Spring
基于ORM
框架和JPA
规范的基础上封装的一套JPA
框架,特点是使用极少的代码即可实现对数据库的访问和操作。并且只需要写接口就可以提供基本的CRUD
功能,优点是简化开发、少打代码、CRUD
Boy的福音。缺点是体系庞大、易入门难精通。
Get Start
下面通过一个快速开始案例来构建一个以Spring JPA框架为例的CRUD
功能.
构建Spring Initializr项目
通过Spring官方提供的一套脚手架可快速的构建Spring Boot工程,并整合Jpa框架
-
点击 New Project

-
选择所需依赖项
-
Lombok:省去写get&set方法 -
Spring Data JPA:框架所需依赖 -
MySQL:操作数据库
在创建好项目之后就基于一个
User
实体进行示例操作。
-
首先需要编写连接MySQL的配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///jpa?serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=system56
spring.jpa.hibernate.ddl-auto=update # 随之项目的启动更新数据库
spring.jpa.show-sql=true # 是否显示SQL语句
-
User
实体类
package com.renzhell.jpa.entity;
import lombok.Data;
import javax.persistence.*;
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;
private String username;
private String phone;
private Integer age;
private String email;
}
-
新增 UserRepository
数据层接口
使用JPA有一个好处就是不用编写具体的实现类,或类似于
MyBatis
一样的SQL文件,只需要写接口并继承框架提供的接口,即可对数据库进行增删改查操作。
package com.renzhell.jpa.repositories;
import com.renzhell.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
public interface UserRepository extends
JpaRepository<User, Long>{}// 第一个参数是指定操作的实体类,第二个参数则是实体类的主键id数据类型
-
创建测试类,调用对应的操作方法
package com.renzhell.jpa.user;
// 省去导入代码
@Slf4j
@SpringBootTest
public class UserTest {
@Autowired
private UserRepository userRepository;
/**
* 调用save插入一条用户数据
*/
@Test
void insert() {
User user = new User();
user.setUserId(1L);
user.setUsername("renzhell");
user.setAge(21);
user.setPhone("16638224118");
user.setEmail("bearpess@gmail.com");
User userData = userRepository.save(user);
log.info("新增的用户数据:==> {} ", userData);
}
/**
* 根据数字id删除User信息
*/
@Test
void delete() {
userRepository.deleteById(1L);
}
/**
* 更新和新增共用一个方法,不同的是更新需要明确指定id值
*/
@Test
void update() {
User user = new User();
user.setUserId(1L);
user.setPhone("110");
user.setAge(20);
User modifiedData = userRepository.save(user);
log.info("修改后的用户信息:==> {} ", modifiedData);
}
/**
* 调用findAll方法查询所有
*/
@Test
void query() {
List<User> userList = userRepository.findAll();
userList.forEach(System.out::println);
}
}
Done...
作者介绍
itbear
V1