SpringBoot 整合 JPA-Hibernate|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习 SpringBoot 整合 JPA-Hibernate

开发者学堂课程【SpringBoot 实战教程 SpringBoot 整合 JPA-Hibernate】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10804


SpringBoot 整合 JPA-Hibernate


1、jpa 是持久化规范它制定了一些持久化的接口hibernate 是它具体的实现

2、首先需要依赖 jpa 的包

<!--springboot 整合 jpa-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId> spring提供的依赖

</dependency>

<dependency>

<groupId>mysql</groupId>使用的是 mysql 数据库所以还要将 mysql 的包进行依赖

<artifactId>mysql-connector-java</artifactId>

</dependency>

把依赖加到工程中已经做好 web 的依赖写好启动类接下来配置连接 mysql 的相关信息以及 jpa 的相关信息这些需要在全局配置文件中配置

和数据库相关的配置主要有以下四项全局配置配置文件:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.url=jdbc:mysql://localhost:3306/db6

使用 db6 数据库

#让控制器输出 json 字符串格式

spring.jackson.serialization.indent-output=true让控制器输出字符串的格式

spring.jpa.hibernate.ddl-auto=update在执行 ddl 操作时执行哪一种

spring.jpa.show-sql=true显示 sql 语句spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 以及使用的方言

3、这些配置好后创建实体类jpa 会根据实体类自动生成相应的表创建包命名为 com.qianfeng.pojo

比如创建 user 实体类

定义一些属性生成 setget 方法它现在只是普通的实体类不可能自动生成相应的表加注解 Entity 后jpa 就知道需要为 user 实体类生成相应的表表的名字默认和实体类的名字相同如果不想用这个名字使用 table 注解表明一张表是需要有主见的如何指定 id 作为表的主见需要使用注解 id主见上的值如何生成生成策略是什么使用注解 GeneratedValue指定主见上的值如何生成

auto 表示自动生成对 mysql 仍然是自动增长identity 也是自动增长sequence 序列mysql 不支持用表的方式其他的属性映射到表中就是相应的字段如果希望字段名和属性名相同不需要做任何操作如果不同需要添加注解 column添加表中的名字如果只写注解不指定表中字段名和属性名是一样的。。

import java.util. Date;

import javax.persistence . Entity;

@Entity

@Table (name="t_user")

public class User {

@id

@GeneratedValue(strategy=GenerationType. IDENTITY)这里选 IDENTITY 让它自动增长

PrivateIntegerid;

PrivateStringname ;

private String password;

private String email;

PrivateDate birthday;

public Integer getId() {

Returnid;

}

public void setId (Integer id) {

this. id = id;

}

public String getName () {

return name ;

}

public void setName (String name) {

this. name = name ;

4、创建 dao 层命名为 com.qianfeng.dao

只需要创建一个接口命名为 userdao

不需要创建实体类只需要创建一个接口只不过要让接口继承 jpaRepository它有两个范型一个范性是实体类的类型第二个范型是实体类中做为主见属性的类型integer 类型jpaRepository 提供增删改成的功能

package com. qianfeng.dao;

import org.spring framework.data.jpa. repository .JpaRepository;

import com. qianfeng .pojo.User;

public interface UserDao extends JpaRepository<User, Integer> {

}

5、创建 service命名为 com.qianfeng.service

首先写一个接口 UserService

写一个功能添加用户写具体的实现类,UserServicelmpl。

加 service 注解调用 dao并且注入添加用户但是dao里面没有写具体的功能只是继承了一个 JpaRepository仍然可以实现添加

package com. qianfeng . service;

import org. springframework. stereotype . Service;

importcom. qianfeng . dao. UserDao;

import com. qianfeng .pojo.User;

@Service

public class UserServiceImpl implements UserService {

private UserDaouserDao;

@ AutowiredPrivateUserDaouserDao;

@Override

public voidadlmUser (User user) {

userDao. save (user) ;

}

}

6、创建 controller,com.qianfeng.controller。Usercontroller

加上注解controller 调用 service注入实现添加 saveuser手动创建 user 对象

@Controller

public class UserController {

@Autowired

private UserService userService ;

@RequestMapping("/ save'')添加用户

@ResponseBody

public StringsaveUser ()

{

Useruser= newUser() ;

user . setName("小花") ;

user . setPassword("123") ;

user. set Email ("xiaohua@163. com") ;

user . setBirthday (new Date () ) ;

userService . addUser (user) ;实现用户添加

return"success";返回成功的字符串

}

7、controller 和 service 需要进行扫描在启动类中进行扫描

@SpringBootApplication(scanBasePackages="com. qianfeng")

8、另外注意 pojo 实体类也需要进行扫描用注解 EntityScan 进行扫描实体类

@EntityScan ("com. qianfeng.pojo")//扫描实体类

9、dao 也需要扫描在启动类中加入注解指明 dao 所在的包

@EnableJpaReposi tories ("com. qianfeng.dao")//扫描 sao

10、查看数据库添加功能可以正常使用启动添加功能小花密码123。成功

image.png 

查看是否自动生成表可以看到已经添加成功并且规定的表名是 t-user有 idnamepasswordemailbirthday这和实体类中的属性名相同

image.png

11、添加两个功能在 service 中根据 id 查找用户删除用户

@Override

public UserfindUser ( Integerid) {

return userDao. findOne (id) ;

}

@Override

public void delUser ( Integer id) {

userDao.delete (id) ;

}

在 controller 里写查找和删除查找返回的是查到的对象

@Reques tMapping("/ find/ {id}")接收 id 查找 find传 id 值

@ResponseBody 阶层格式

public User findUser (@PathVariable Integer id)

return userService. findUser (id) ;

@RequestMapping("/del/ (id)")删除 del传 id 值

@ResponseBody

PublicString delUser (@PathVariable Integer id) (

userService .delUser (id) ;

return "ok";

12、输入localhost:8080/find/1查找 id 是1可以看到小花的阶层格式

image.png

输入localhost:8080/del/1删除

image.png

查看数据库已经删掉了

image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
XML Java 数据库连接
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
113 0
|
1月前
|
SQL Java 数据库连接
springBoot+Jpa(hibernate)数据库基本操作
springBoot+Jpa(hibernate)数据库基本操作
42 0
|
3月前
|
Java 关系型数据库 MySQL
|
4月前
|
Java 数据库连接 数据库
如何在Spring Boot中集成Hibernate
如何在Spring Boot中集成Hibernate
|
5月前
|
Oracle Java 关系型数据库
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
|
6月前
|
Java 关系型数据库 MySQL
【极光系列】springBoot集成Hibernate
【极光系列】springBoot集成Hibernate
41 2
|
SQL 缓存 Oracle
一文教会你如何在SpringBoot项目里集成Hibernate
一文教会你如何在SpringBoot项目里集成Hibernate
826 0
|
6月前
|
Java 关系型数据库 数据库连接
Hibernate学习笔记(一)快速入门
Hibernate学习笔记(一)快速入门
|
6月前
|
存储 Java 数据库连接
Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析
Spring Boot 的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行 Web 服务器,无需将其部署到单独的独立 Web 服务器中。这使得开发、测试和部署 Web 应用程序变得容易,而且它还是轻量级的、易于启动和停止的,易于配置。
110 0
|
Java 关系型数据库 数据库连接
Spring Boot 学习研究笔记(八) - Spring Data JPA与Hibernate区别及配置(2)
Spring Boot 学习研究笔记(八) - Spring Data JPA与Hibernate区别及配置
274 0
下一篇
无影云桌面