首页 > 其他分享 >Springboot整合JPA

Springboot整合JPA

时间:2022-10-09 20:36:55浏览次数:52  
标签:Springboot JPA 数据库 接口 jpa 整合 id name


 

 

概述

前面文章记录了Springboot整合Mybatis以及Spingboot整合JDBCTemlate的过程,这篇文章记录Springboot整合JPA操作过程。jpa实际也是用来操作数据库的持久层框架,如何使用jpa操作数据库,和Springboot整合Mybatis以及Spingboot整合JDBCTemlate一样,数据库连接池还是使用默认的连接池tomcat.jdbc.pool,我们不再配置Druid或者其他连接池,关于Springboot如何整合Druid或者其他连接池后面文章会给出。

什么是JPA?

全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。

为我们提供了:

1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;

如:@Entity、@Table、@Column、@Transient等注解。

 2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

如:entityManager.merge(T t);

 3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

如:from Student s where s.name = ?

但是:

JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。

也就是说:

JPA是一套ORM规范,Hibernate实现了JPA规范!如图:

Springboot整合JPA_数据库

什么是spring data jpa?

spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。如图:

Springboot整合JPA_数据库_02

接口约定命名规则:

Springboot整合JPA_数据库_03

实例:

Springboot整合JPA_数据库_04

Springboot整合JPA_hibernate_05

springboot集成spring data jpa

引入stater

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

编写实体类

对POJO类增加Entity的注解,并指定表名(如果不指定,默认的表名为student),然后指定ID的及其生成策略,这些都是JPA的知识,与Spring boot无关,代码:

//使用jpa注解配置映射关系
@Entity//告诉jpa这是和数据库映射的类
@Table(name="tb_student")//table指明和哪个表映射 如果省略默认就是student表
public class Student {
//属性id
@Id//这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer id;
//属性name
@Column(name = "name",length = 50)//默认属性就是列名
private String name;

编写接口

//继承JpaRepository完成对数据库的操作 
public interface StuRepository extends JpaRepository<Student,Integer>{
public int add(Student student);
}

基本配置(能配置的都在都在JpaProperties类中)

#更新或者參加数据表
spring.jpa.hibernate.ddl-auto=update
#打印sql语句控制台
spring.jpa.show-sql=true

测试

@Controller
public class IndexController {
@Autowired
StuRepository stuRepository;
@GetMapping("/index/{id}")
public void index(@PathVariable ("id") Integer id){
//直接使用jpa提供好的方法
Student student = stuRepository.getOne(id);
System.out.println(student);
}
}

前面直接使用的是jpa规范中定义好的接口,我们也可自己在接口中定义方法

//继承JpaRepository完成对数据库的操作
public interface StuRepository extends JpaRepository<Student,Integer>{
@Query("select * from com.guxf.domain.Author au where id=:id")
public List<Student> queryByName(@Param("id") Integer id);
}

至此 Springboot整合jpa完成,有疑问可以关注我的公众号 java一号  联系


标签:Springboot,JPA,数据库,接口,jpa,整合,id,name
From: https://blog.51cto.com/u_11334685/5741383

相关文章

  • Springboot异常处理和自定义错误页面及@ControllerAdvice 注解的三种使用场景!五、@Con
    一、前言springboot默认发生4xx错误时候,pc端响应的页面如下如果是移动端(手机端)将会响应json格式的数据,如下二、Springboot异常处理为什么我们请求错误的路径,boot会给我们返......
  • Springboot整合jsp
    1.创建项目2.选择war工程3.这里可以选择web模块引入(我这里选择的boot版本是2.2.1)4.必须要引入的依赖<dependency><groupId>org.apache.tomcat.embed</groupId><artifa......
  • Springboot整合freemarker
    一、概述FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Jav......
  • springboot高级——消息队列相关
    写在前边:本文学习尚硅谷的springboot高级整理笔记。消息队列是什么,有什么好处?通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队ActiveMQ,RabbitMQ,Kafk......
  • SSM整合
    学习文档:https://blog.csdn.net/zengwei1973/article/details/105424888ssm整合步骤:       1.环境ssm整合之mybatis2.建数据库CREATEDATABASE`ssmbu......
  • 【SpringBoot】解决redis 查找/删除缓存失败问题
     使用StringRedisTemplate.delete(key) 删除缓存数据失败,原因是序列化问题导致。 需要把key和hash都使用String的序列化方式 解决方法:创建一个新的配置类:@Con......
  • springboot——数据访问——JPA
      在有了springdata以后,给我们提供好了访问数据的解决方案。 如果之前使用过hibernate,你肯定也好奇,hibernate里边有级联操作。你可能跟我一样关心springboot 如何去做级......
  • springboot——数据访问——Druid&配置数据源监控
     在开发中会用Druid,因为它有成套的数据源监控想要使用需要做以下的操作: 在pom文件中引入依赖在application.yml里边添加配置想要在yml里边配置更多,则需要: 但是这并不能起......
  • springboot——数据访问——整合mybatis
    springboot没有直接提供和mybatis对接的stater,但是mybatis自己提供了整合的。想要在springboot中使用mybatis还是方便的。步骤:可以在创建项目的时候就直接勾选住依赖,也可以......
  • Springboot整合RestTemplate发送http请求
    据技术选型总结常见的三种方式发送http请求,本文介绍Springboot整合RestTemplate发送http请求方式,其他两种如下链接java原生发送http请求_程序三两行的博客HttpClient和OkHtt......