Java for Web学习笔记(一三八)篇外之数据库的ACID和JPA(2)JPA

在测试中,我们发现在一个JPA事务中:

  • Spring Data的写SQL是在最后commit前发出,这最大程度地缩短了写操作和commit之间的时间。
  • 对相同的ID的读,JPA只从数据库中读取一次。
  • 从数据库中获取entity,修改entity的数据,即使最后没有执行save,在commit之前,发送update。

下面是其中一个测试小例子:

@Transactional
public void acidTest() {
	TestAcidEntity entity1 = testAcidRepository.findOne(1L);
	sleep(2);
	entity1.setScore(entity1.getScore() + 1);
	testAcidRepository.save(entity1);
		

	sleep(4);		
	TestAcidEntity entity2 = testAcidRepository.findOne(2L);
	entity2.setScore(entity2.getScore() + 10);
	sleep(2);
	testAcidRepository.save(entity2); //可以将此注释掉,观察是否有update消息
}

private void sleep(int secs) {
	try {
		Thread.sleep(secs * 1000);
	} catch (InterruptedException e) {
	}
}

通过网络抓包(将jdbc连接参数加上useSSL=false)进行观察:

代码顺序:select1 → 2秒 → update1 → 4秒 → select2 → 2秒 → update2 → commit
网络抓包显示的SQL顺序 :select1 → 6秒 → select2 → 2秒 → update1 → update2 → commit

相关链接:我的Professional Java for Web Applications相关文章

Java企业场景下的实战入门课(Spring Boot+Redis)

04-20
<p> 企业场景下的Java实战课程!  </p> <p> 【超实用课程内容】 本课程主要是从最基础的技术要点一步一个脚印的介绍Spring Boot2.0相关的核心技术栈和缓存中间件Redis常见且典型的数据结构、相关的核心技术栈及典型的应用场景的实战。并附带业务场景实战用户注册和点赞系统中点赞功能模块的设计与实现为各位小伙伴提供企业级项目开发中常见且典型的Java核心技术,可以说是拒绝纸上谈兵、注重实战并学以致用!  </p> <p> <br> </p> <p> 套餐中一共包含2门实战入门课程(共82讲)  </p> <p> 课程1:《Java实战之Spring Boot入门到精通》  </p> <p> 课程2:《Java实战之Redis入门到精通》  </p> <p> <br> </p> <p> 【基础要求】  </p> <p> 1、基本要求:具备一定的JavaSE以及Java Web项目的开发基础、了解spring boot更佳  </p> <p> 2、工具要求:会使用Intellij IDEA、Navicat以及Postman  </p> <p> <br> </p> <p> 【你能收获到什么?】  </p> <p> 1、帮助学员了解并掌握springboot和缓存中间件Redis的方方面面、包括其典型及常用的数据结构及其在实际项目开发中典型的应用场景!  </p> <p> 2、掌握如何基于Spring Boot搭建企业级项目,整合加入中间件Redis相关的依赖配置,并以此为扩展,为后续学习其他中间件做铺垫;可以提升学员Java中间件的实战能力。  </p> <p> 3、帮助学员了解并掌握缓存中间件Redis在实际应用中有哪些常见、典型的应用场景,如对象信息存储、列表存储、队列特性分发消息、试题库随机获取、排行榜等等,这对于学员在平时项目开发、跳槽面试等情况下将有很大的帮助  </p> <p> 4、本课程介绍的基于Redis相关数据结构的特性独立设计并实战项目中典型功能模块,如会员到期自动提醒、点赞功能模块等内容,将有助于学员将所学的技术栈真正应用到实际中、提升自身的数据库设计能力、业务理解能力、代码实战能力以及性能优化方面的能力  </p> <p> <br> </p> <p> 【课程如何观看?】  </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习;  </p> <p> 2、移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录课程观看页面,点击右下方课程资料、代码、课件等打包下载 </p> <p> <img src="https://img-bss.csdn.net/202004200821078434.png" alt=""> </p>
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值