简介
我们都知道一个概念ORM(Object Relational Mapping)对象关系映射,ORM的作用是在操作数据库之前,先把数据表与实体类关联起来,然后通过实体类的对象操作(增删改查)数据库表。所以,ORM是一个实现使用对象操作数据库的设计思想!!! 通过这句话,我们知道JPA的作用就是通过对象操作数据库的,不用编写sql语句。
JPA和Hibernate、toplink的关系就像JDBC和mysql、Oracle驱动的关系一样,JPA是规范,Hibernate除了是ORM框架之外,它还是一种JPA的实现。而Spring Data JPA其实就是基于ORM框架封装了的Hibernate,可使得开发者用极简的代码即可实现对数据库的访问和操作,它提供了包括增删改查等常用功能,可以极大提高开发效率。
快速入门
- 新建一个web项目(可以参考我的上一篇博客SpringBoot初体验)打开pom.xml引入依赖
<dependencies>
<!--只要和数据库有链接就会有JDBC的依赖包,所以导入了JPA就有了JDBC的依赖包不需要再导入了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--引入web依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入mysql依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
打开配置文件application.yml,添加数据库配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#能配置哪些属性在JpaProperties里面有绑定,参照即可
jpa:
hibernate:
#更新或者创建数据表结构
ddl-auto: update
#控制台显示sql
show-sql: true
添加实体类User
//使用JPA注解配置映射关系
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tb2_user") //@Table 来制定和那个数据表对应;若省略则对应小写的user
public class User {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增
private Integer id;
@Column(name = "last_name", length = 50) //这是和数据表对应的一个列,大小50
private String lastName;
@Column //省略:默认列名就是属性名
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
添加接口类UserRepository继承JpaRepository
//继承JpaRepository<User, Integer> 完成对数据库的操作 <实体类类名, 实体类主键的数据类型>
public interface UserRepository extends JpaRepository<User, Integer> {
}
添加Controller层UserController
@RestController
public class Usercontroller {
//不需要添加@Bean注入容器, 因为UserRepository本身就是 JPARepository
@Autowired
UserRepository userRepository;
@GetMapping("/user/{id}")
public User findUserById(@PathVariable("id") Integer id) {
return userRepository.findById(id).orElse(null);
}
@GetMapping("/user")
public User insertUser(User user) {
User user1 = userRepository.save(user);
return user1;
}
}
新建数据库jpa
启动项目会自动生成表tb2_user
浏览器输入localhost:8080/user?lastName=zhangsan 添加User对象成功,并查看数据库表
最后浏览器输入localhost:8080/user/1 得到json对象,测试成功