Spring Boot Test 进行JPA 测试保存数据到数据库
在Spring Boot 中,将 @SpringBootTest 注解加载测试类中可以很方便的进行测试。
如果是JPA的数据操作, 则测试方法执行时会报 No EntityManager with actual transaction available for current thread
的错误, 翻译一下就是“当前线程没有事务支持”。
解决方法时在测试类或是方法上增加注解:@Transactional
再执行如下测试方法:
@Testpublic void add() {Usr usr = new Usr(1,"张三",1);entityManager.persist(usr);}
方法是成功执行了, 但是查询数据库表却没有数据。 原因是:Spring Test 对数据库的操作在方法执行完成后会回滚事务, 也就是数据不会实际写入到Db , 这个设计其实也很合理。 特别是在实际环境中, 如果不可避免的要在正式环境中测试, 这种设计会比较安全。
如果实在要在Test 写入Db, 则需要增加 @Rollback(false) 注解。
综合起来, 如果要在Test 要插入数据到Db , 需要以下两个注解:
@Transactional
@Rollback(false)
public class JpqlTests {
}
- @Transactional ,开启事务, 这是JPA 的标准注解
- @Rollback(false) , Spring Test的专属注解, 不会回滚, 也就是实际写入到数据库。 在实际业务代码中不可使用。
注: 这两个注解也可以使用在测试方法上, 只对该测试类的某个方法生效。
Spring Boot Test 进行JPA 测试保存数据到数据库相关推荐
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
[原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...
- Spring Boot下使用JPA报错:'hibernate.dialect' not set的解决办法
问题现象: Spring Boot下使用JPA报错:'hibernate.dialect' not set 原因是: 没有设置数据库方言导致的 解决方案: 1.如果配置文件格式为application ...
- Spring Boot通过配置文件区分测试和生产环境
Spring Boot通过配置文件区分测试和生产环境 方法一:我们定义三个配置文件,一个是开发,我们定位为:application-dev.yml,另一个是生产,我们定义为application-pr ...
- java 保存数据到数据库_保存数据到数据库成功
保存数据到数据库成功 package com.demo; import javax.swing.AbstractButton; import javax.swing.JFrame;//框架 impor ...
- Spring Boot+微信小程序_保存微信登录者的个人信息
1. 前言 微信小程序开发平台,提供有一类 API,可以让开发者获取到微信登录用户的个人数据.这类 API 统称为开放接口. Tip:微信小程序开发平台,会把微信登录用户的个人信息分为明文数据和敏感数 ...
- Spring Boot基于注解方式处理接口数据脱敏
1.定义注解 创建Spring Boot项目添加以下依赖 <dependencies><dependency><groupId>org.springframewor ...
- Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器.它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ...
- 在Spring Boot应用程序中测试邮件代码
在构建Spring Boot应用程序时,您可能会需要添加邮件配置. 实际上,在Spring Boot中配置邮件与在Spring Bootless应用程序中配置邮件没有太大区别. 但是,如何测试邮件配置 ...
- Spring Boot 如何组装一个树结构的数据?
导语 项目中出现需求要求返回一个树结构的数据到页面中,但是再数据库设计的时候我们使用的是id与父id的结构来进行存储的,所以说需要有一个简单的数据结构的转换,那么在Spring Boot中如何实现 ...
最新文章
- Class文件结构amp;字节码指令
- Symbian编程VC开发环境设置
- python中concat的用法_python pandas concat用法及代码示例
- 计算机科学与技术在海南,2017年怀化学院计算机科学与技术专业在海南录取分数线...
- 【Kudu-未解决】Kudu : Kudu error: Could not connect to a leader master. Client configured with 1 master
- Oracle RAC的Failover
- 开源流媒体系统:OBS ( Open Broadcaster Software ) 介绍
- jQuery中return false e preventDefault e stopPropagation 的区
- 易语言皮肤模块200个_S7200 SMART 模拟量模块种类amp;选型须知
- atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux
- 前嗅教你大数据——史上最全代理IP服务商对比
- 计算机远程控制安全吗,远程控制电脑危险吗?向日葵远程控制软件安全吗?
- pdm系统是归档服务器吗,PDM系统的主要功能
- 2022快手春节跳一跳红包到 怎么获得66元红包?
- Python 爬取百万网易云音乐热门评论
- MOS管做二极管使用
- AI绘图:chatGpt,midjourney, discord
- 拥有微软Windows CE的实时系统
- 解决 这些文件可能对你的计算机有害问题
- 阿里云视频直播推流和播流地址生成
热门文章
- smokeping主从同步报错
- 生命太短暂,我没时间讨厌你
- FOJ 1887 景区摊位安排问题
- win2003服务器中:无法连接ACCESS数据库/sql数据库正常 .net程序生成的dll文件拒绝访问问题...
- 转载sanmusoft 论电脑报论坛的挂掉及电脑报的最后倒掉
- 使用 PDBDownloader 解决 IDA 加载 ntoskrnl.exe 时符号不完全问题
- Motion and Optical Flow
- 达摩院李雅亮:大规模预训练模型的压缩和蒸馏
- wifi定位算法 java_几种室内定位技术方案对比,室内定位种类的优缺点一目了然...
- Tiktok下载量激增至20亿次,视频带货或将席卷海外,跨境电商的风口