基础框架
天才之上
路上的风景一片精彩。
展开
-
基础框架:mybatis工作原理
引言在mybatis的基础知识中我们已经可以对mybatis的工作方式窥斑见豹(参考:《MyBatis————基础知识》)。但是,为什么还要要学习mybatis的工作原理?因为,随着mybatis框架的不断发展,如今已经越来越趋于自动化,从代码生成,到基本使用,我们甚至不需要动手写一句SQL就可以完成一个简单应用的全部CRUD操作。从原生mybatis到mybatis-spring,到myb...转载 2019-06-10 14:49:09 · 1971 阅读 · 0 评论 -
JPA生命周期相关注解
在我们使用JPA对数据库进行操作的时候,我们时常会出现数据库字段设置未不能为空,而我们保存的字段为null导致程序报错。这个时候我们就可以使用 @PrePersist @PostPersist 注解回调方法来解决问题。回调方法是附加到实体生命周期事件的用户定义方法,并且在发生这些事件时由JPA自动调用。我们可以发现有很多类似的注解可以使用:@PrePersist- 在新实体持久化之前(...原创 2019-09-04 14:21:19 · 346 阅读 · 0 评论 -
高并发锁事务重试机制(JPA高并发下的乐观锁异常)
乐观锁:model实体类加version字段 @JsonProperty("_version") @Column(name = "version", nullable = false) @Version private Long version = 0L;问题场景先在库里查询出该实体,转化为持久态,在这时库里的该数据被修改了...原创 2019-09-04 15:28:45 · 2333 阅读 · 0 评论 -
hibernate/jpa事务提交执行sql顺序(坑)
SSH框架下,spring的事务中提交时hibernate的sql执行顺序错乱,未按代码顺序实现。 JPA也是。Hibernate在最终执行SQL语句时,居然是按INSERT, UPDATE, DELETE的顺序执行的,而非按照代码顺序执行!原因hibernate了性能优化,不会把sql语句直接提交给数据库,而是先放在hibernate的缓存中等事务commit的时候一起提交,为的是...原创 2019-09-06 10:39:06 · 4059 阅读 · 0 评论 -
JPA事务处理(坑)
1、JPA事务JPA的确没有提供事务级别的设置,只提供了@TransactionAttribute注释用作定义一个需要事务的方法。它可以有以下参数:1.REQUIRED:方法在一个事务中执行,如果调用的方法已经在一个事务中,则使用该事务,否则将创建一个新的事务。2.MANDATORY:方法必须在一个事务中执行,也就是说调用的方法必须已经有一个事务,否则新抛出一个错误(ERROR)...原创 2019-09-06 10:40:16 · 1717 阅读 · 0 评论 -
Spring 中@transactional
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Tr...转载 2019-09-06 11:02:02 · 267 阅读 · 0 评论