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注入
-
动态代理的设计模式在执行前后或出现异常后做相关逻辑
Spring事务的传播特性!!!!!
事务特点:ACID(原子性、隔离性、持久性、一致性)
多个事务存在怎么处理策略
- PROPAGATION_REQUIRED: 需要 如果存在一个事务,支持当前事务,如果没有事务则开启
- PROPAGATION_SUPPORTS: 支持 如果存在一个事务,支持当前事务,如果没有事务则执行非实物
- PROPAGATION_MANDATORY: 必要 如果存在一个事务,支持当前事务,如果没有事务则抛出异常
- PROPAGATION_REQUIRED_NEW: 总是开启新事物。如果已存在事务,就将事务挂起
- PROPAGATION_NOT_SUPPORTED:总是非实物执行,如果有事务就挂起
- PROPAGATION_NEVER: 绝不总是非实物执行,如果有事务就抛出异常
- PROPAGATION_NESTED: 嵌套的 有就嵌套,没有就开启事务
事务的隔离级别
- isolation_default
使用数据库默认的事务隔离级别
-
isolation_read_uncommitted
允许读取尚未提交的修改,可能导致脏读、幻读和不可重复读 -
isolation_read_committed
允许从已经提交的事务读取,可防止脏读、但幻读,不可重复读仍然有可能发生
- isolation_repeatable_read
对相同字段的多次读取的结果是一致的,除非数据被当前事务自生修改。可防止脏读和不可重复读,但幻读仍有可能发生
- 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映射对象状态
- 瞬时状态(transient)刚用new语句创建,没被持久化无id
- 持久化状态(persistent)已被持久化,加入session缓存。save/saveOrUpdate/get/load/list持久化对象
- 游离状态(detached)已被持久化,不在session缓存/session关闭
- 删除状态(removed)对象有关联ID,在session管理下,但已被计划删除(事务提交commit()),没有事务不能删除
Hibernate的缓存
Hibernate是持久层框架,为了提高访问速度,把磁盘或数据库访问变成内存访问。
- 一级缓存(session级别)内置不能被卸载
- 二级缓存(sessionFactory、进程范围、集群范围)和应用的生命周期对应
二级缓存是可选的,可配置插件,默认不开启。默认不支持分布式缓存。使用memcache、redis等中央缓存代替二级缓存。 - 使用场景:
- 很少修改数据、
- 不重要数据、
- 经常被查询
- 允许偶尔出现并发数据、
- 不能被并发访问数据、
- 常量数据
相关文章推荐
- Java高手真经. 应用框架卷:Java Web核心框架:Struts 1+Struts 2+Spring+Hibernate+iBATIS (china-pub 首发)
- Hibernate基础---映射文件、配置文件、Java对象的三种状态
- Hibernate的原理体系架构,五大核心接口,Hibernate对象的三种状态转换,事务管理
- Spring整合Hibernate,事务的几种传播特性,数据库事务隔离级别(脏读幻读不可重复读)
- Hibernate中Java对象的三种状态
- Hibernate中的JAVA对象有三种状态
- 05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法 2 关于delete后的状态
- 与hibernate的集成:声明式事务.事务的传播特性等.
- spring事务传播特性
- Spring事务的传播特性和隔离级别
- Java程序员从笨鸟到菜鸟之(五十七)细谈Hibernate(八)Hibernate集合Map关系映射
- hibernate中java对象的三种状态
- Java程序员从笨鸟到菜鸟之(六十二)细谈Hibernate(十三)session缓存机制和三种对象状态
- 燃烧的远征java(三)-Struts+Spring+Hibernate:java的几种对象(PO,VO,DAO,BO,POJO)解释
- 关于spring的事务传播特性
- 求助:如果直接将hibernate的ORM映射对象序列化了传递到gwt里去,并且使用了集合映射,就会出现这个错误
- Java 按钮和单击事件映射到动作对象改变面板颜色小程序实例 Java核心技术 事件处理
- SSH(struts+spring+hibernate)迅速开发--第三章 生成POJO对象和表映射(2)
- hibernate事务的传播特性
- 05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法 1