您的位置:首页 > 编程语言 > Java开发

Java知识点集合05--- Spring的两大核心&Spring事务的传播特性&隔离级别&ORM&ibatis和Hibernate&Hibernate映射对象状态

2018-10-28 22:34 295 查看

Spring的两大核心

  • spring是J2EE应用程序框架,是轻量级的IOC和AOP容器框架(相对于EJB ),针对javabean生命周期进行管理的亲两级容器。
  • IOC(控制反转Invesion of control)或DI(依赖注入 Dependency Injection):service依赖dao就注入 原理:配置文件+容器(map)+反射(工厂)
  • 实现方法:接口注入、构造器注入、getter/setter注入
  • AOP(面向切面编程Aspect O Programming)
      动态代理的设计模式在执行前后或出现异常后做相关逻辑
    • 使用场景:事务处理(执行方法前开启事务,执行完成后关闭事务,出现异常后回滚事务)、权限判断(执行方法前判断是否有权限)、日志(执行方法前进行日志处理))

    Spring事务的传播特性!!!!!

    事务特点:ACID(原子性、隔离性、持久性、一致性)
    多个事务存在怎么处理策略

    1. PROPAGATION_REQUIRED: 需要 如果存在一个事务,支持当前事务,如果没有事务则开启
    2. PROPAGATION_SUPPORTS: 支持 如果存在一个事务,支持当前事务,如果没有事务则执行非实物
    3. PROPAGATION_MANDATORY: 必要 如果存在一个事务,支持当前事务,如果没有事务则抛出异常
    4. PROPAGATION_REQUIRED_NEW: 总是开启新事物。如果已存在事务,就将事务挂起
    5. PROPAGATION_NOT_SUPPORTED:总是非实物执行,如果有事务就挂起
    6. PROPAGATION_NEVER: 绝不总是非实物执行,如果有事务就抛出异常
    7. PROPAGATION_NESTED: 嵌套的 有就嵌套,没有就开启事务

    事务的隔离级别

    1. isolation_default

    使用数据库默认的事务隔离级别

    1. isolation_read_uncommitted
      允许读取尚未提交的修改,可能导致脏读、幻读和不可重复读

    2. isolation_read_committed

    允许从已经提交的事务读取,可防止脏读、但幻读,不可重复读仍然有可能发生

    1. isolation_repeatable_read

    对相同字段的多次读取的结果是一致的,除非数据被当前事务自生修改。可防止脏读和不可重复读,但幻读仍有可能发生

    1. isolation_serializable

    完全服从acid隔离原则,确保不发生脏读、不可重复读、和幻读,但执行效率最低。

    ORM(Object relation Mapping)

    对象关系映射,解决面向对象关系型数据库存在的不匹配现象的技术

    • jdbc操作sql
    • ORM框架:Hibernate、ibatis(mybatis),speedframework
    • ORM3个原则:
    • 简单:以最基本形式建模数据
    • 传达性:数据库结构难以理解的语言文档化
    • 精确性:基于数据模型创建正确标准化的结构

    ibatis和Hibernate

    相同:都是ORM框架,屏蔽了JDBC底层访问细节,完成数据库持久化操作。

    ibatis:提供将结果集自动封装成一个实体对象或对象的集合功能。queryForList返回对象集合;queryForObject返回单个对象;将实体对象属性传递给sql语句参数
    Hibernate:全自动的ORM映射工具,自动生成SQL语句,执行返回Java对象

    区别:Hibernate自动生成SQL语句,功能强大;;ibatis需要在xml配置文件中写sql语句,Hibernate无法写高效、复杂sql语句;;ibatis简单,面向sql

    Hibernate映射对象状态

    1. 瞬时状态(transient)刚用new语句创建,没被持久化无id
    2. 持久化状态(persistent)已被持久化,加入session缓存。save/saveOrUpdate/get/load/list持久化对象
    3. 游离状态(detached)已被持久化,不在session缓存/session关闭
    4. 删除状态(removed)对象有关联ID,在session管理下,但已被计划删除(事务提交commit()),没有事务不能删除

    Hibernate的缓存

    Hibernate是持久层框架,为了提高访问速度,把磁盘或数据库访问变成内存访问。

    • 一级缓存(session级别)内置不能被卸载
    • 二级缓存(sessionFactory、进程范围、集群范围)和应用的生命周期对应
      二级缓存是可选的,可配置插件,默认不开启。默认不支持分布式缓存。使用memcache、redis等中央缓存代替二级缓存。
    • 使用场景:
      - 很少修改数据、
      - 不重要数据、
      - 经常被查询
      - 允许偶尔出现并发数据、
      - 不能被并发访问数据、
      - 常量数据
    阅读更多
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐