SpringBoot访问数据库及事务相关

对于JPA来说,SpringBoot是依赖Hibernate才得以实现的。 Hibernate在3.2版本中已经对JPA实现了完全的支持。

JPA的所维护的核心是实体(Entity Bean),而它是一个通过持久化上下文(Persistence Context)来使用的

  • 对象关系映射(Object Relationl Mapping), JPA支持注解或者XML方式
  • 实体操作API,完成CRUD操作,持久化和查询
  • 约定面向对象查询语言JPQL(Java Persistence Query Language)

MyBatis的配置

MyBatis 是一个基于SqlSessionFactory构建的框架。它的作用是生成SqlSession接口对象,Mybatis-Spring的结合中可以“擦除”这个对象,使业务代码更具可读性。MyBatis应用生命周期理当只存在一个SqlSessionFactory对象,并且往往会使用单例模式。

  • properties 属性:实际应用统一采用Spring进行配置
  • setting 设置:它的配置将改变MyBatis底层的行为,可以配置映射规则,如果自动映射和驼峰映射、执行器类型、缓存等
  • typeAliases (类型别名):因为它使用类全限名称会比较长,Mybatis提供默认认的别名,此外也可以通过 typeAliases配置自定义
  • typeHandlers 类型处理器:在Mybatis写入和读取数据库的过程 中对于不同类型的数据(java 是 java Type ,数据库是 jdbcType) 进行自定义转换
  • objectFactory (对象工厂):这是一个在MyBatis 生成返回的POJO时会调用的工厂类。一般我们Mybatis默认(DefaultObjectFactory)就可以了。
  • plugins 插件:有时候也称拦截器,它通过动态代理和责任链接模式来完成
  • enviroments 数据库环境: 可以配置数据库连接事务和内容
  • databaseProvider 数据库厂商标识: 允许MyBatis配置多类型数据库运行
  • mappers: 提供 SQL 和POJO映射关系

@Alias(value = "user")
public class User {

}

事务

@Transation 源码分析


@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {   
    // 指定事务管理器
    @AliasFor("transactionManager")
    String value() default "";
    
    // 同value属性
    @AliasFor("value")
    String transactionManager() default "";
    
    // 指定传播行为
    Propagation propagation() default Propagation.REQUIRED;

  // 指定隔离级别
    Isolation isolation() default Isolation.DEFAULT;
    
   // 指定超时时间
    int timeout() default -1;
    
    // 是否开始只读事务
    boolean readOnly() default false;
    
    // 方法发生指定异常名称时回滚,默认所有异常都回滚
    Class<? extends Throwable>[] rollbackFor() default {};

    // 方法发生指定异常名称时回滚,默认是所有异常都回滚
    String[] rollbackForClassName() default {};
    
    //方法在发生指定异常名称时不回滚,默认是所有异常都回滋
    Class<? extends Throwable>[] noRollbackFor() default {};

    String[] noRollbackForClassName() default {};
}

隔离级别

多个事务同时访问同一记录,会引起数据不一致的情况,便是数据库的丢失更新(Lost Update)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值