1、问到struts2原理
2、spring ioc及aop的理解。
事务配置步骤、隔离级别、传播属性等
事务就相当于我们做一件事情(这件事由许多小的步骤组成),要么我们就把这件事情完完整整地做成功,要么我们就一点也不要做。不能做到半截撂摊子不干了。 |
回到Spring来,Spring的Dao框架对事务提供了强大的支持。它包括有两种事物管理,即:
- 编程式事物管理(programmatic tansaction management)
- 声明式事物管理(Declarative tansaction management)
所谓编程式事物管理,就是把事物管理以代码的形式编写到你的应用中要使用事物管理的地方,灵活性较强。而声明式事物管理是以配置文件的形式在xml文件中定义,好处是不具有代码入侵性,当不需要事物管理时,可以直接修改配置文件,而不用修改代码。以后会介绍这两种事物管理。
在Spring中,主要涉及以下几种事物属性:
1. 传播行为(propagation behavior)
它是对事物的起始,暂停,终止时刻的定义,主要有以下几种
参数 | 含义 |
PROPAGATION_REQUIRED | 如果存在事物的话,就继续这个事物,如果不存在,新建一个事物。 |
PROPAGATION_SUPPORTS | 如果存在事物的话,就继续这个事物,如果不存在,就以非事务的方式进行。 |
PROPAGATION_MANDATORY | 必须在现存事物中执行,否则抛出异常。 |
PROPAGATION_REQUIRES_NEW | 建立一个新事物,如果现存一个事物,则暂停它。 |
PROPAGATION_NOT_SUPPORTED | 不再事务中执行,如果现存事物,则暂停它。 |
PROPAGATION_NEVER | 不再事务中执行,如果现存事物,则抛出异常。 |
PROPAGATION_NESTED | 在一个嵌入的事物中执行,否则同PROPAGATION_REQUIRED |
上述参数是在org.springframework.transaction.TransactionDefinition接口中定义的(类型是public static final,值从0到6)。上述参数中最常用的是PROPAGATION_REQUIRED。
2. 隔离等级(isolation level)
在一个应用应用程序中,可能有多个事务在运行,这时就会产生一些问题。
- dirty read
一个事物更新了数据库中的某些数据,另一个事物读取了这些数据,这时前一个事物由于某些原因回滚了,那么第二个事物读取的数据就是“脏数据”。
- non-repeatable read
一个事物需要两次查询同一数据,但两次查询中间可能有另外一个事物更改了这个数据,导致前一个事物两次读出的数据不一致。
- phantom read
一个事物两次查询同一个表,但两次查询中间可能有另外一个事物又向这个表中插入了一些新数据,导致前一个事物的两次查询不一致。
为了解决以上问题,Spring的事物管理定义了一些隔离级别,所谓“隔离”,即对数据的锁定。
参数 | 含义 |
ISOLATION_DEFAULT | 使用数据库默认的隔离级别 |
ISOLATION_READ_UNCOMMITTED | 容许事物读取其他并行事物还未提交的数据。这种级别会出现上面三种情况。 |
ISOLATION_READ_COMMITTED | 容许事物读取其他并行事物已经提交(commit)的数据,可防止dirty read |
ISOLATION_REPEATABLE_READ |
这种级别会可以防止上面三种情况发生。 |
ISOLATION_SERIALIZABLE | 使用事物锁,锁定相应数据,可以防止上面三种情况发生,但效率比较低。 |
上述参数也是在org.springframework.transaction.TransactionDefinition接口中定义的(类型是public static final,值为-1,1,2,4,8)。上述参数中最常用的是ISOLATION_DEFAULT。
3. read only
应用这项属性时,底层的数据库可以对读取进行最优化,但要配合PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW或PROPAGATION_NESTED使用,即只能在事物中使用。
4. timeout
在多事物并行情况下,为了保证正确性,有些事物的操作会有延迟,甚至死锁。设置事物超时时间,可以避免事物的长时间等待。设置事物超时时间也要配合PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW或PROPAGATION_NESTED使用。
以上的四种属性及其相应方法都定义在org.springframework.transaction.TransactionDefinition接口及其实现类(如org.springframework.transaction.support.DefaultTransactionDefinition)里。
3、是否熟悉ibatis及spring mvc
4、项目数据库迁移需注意哪些地方
三大数据库区别在哪
5、mysql 引擎
http://www.cnblogs.com/sopc-mc/archive/2011/11/01/2232212.html
相关推荐
陈涛后端面试总结 这篇文章总结了数字IC后端的一些重要问题,涵盖了电源走线的选择、交替路由的应用、线间干扰的解决、标准单元延迟的影响因素、禁止使用库中某些单元、wire load model的类型、延迟模型的类型、...
这份"10万字面试总结Java.pdf"涵盖了Java基础知识、JVM、Spring框架、并发编程、Linux、Dubbo、Mybatis、Springcloud、Spring Boot、消息队列和Zookeeper等多个核心主题,旨在帮助Java开发者全面准备面试。...
### 阿里面试总结及答案 #### 一、Java事件机制 Java事件机制是Swing框架中的核心组件之一,它允许程序响应用户输入或其他事件。该机制主要包括三个方面:事件、事件监听器以及事件源。 - **事件**:通常继承自`...
在进行《我想进大厂》的面试总结时,我们首先要了解面试对于求职者和招聘方的重要性。面试不仅仅是一个考核和选择的过程,它也反映了求职者的职业素养、技术能力、沟通技巧和解决问题的能力。而对于面试官而言,面试...
全网最全-谷粒商城项目-面试总结-简历优化_Java-You的博客-CSDN博客 .html
2020年上海JAVA开发工程师面试总结
阿里巴巴面试总结DOC版 本资源摘要信息主要总结了阿里巴巴面试中的问题和答案,涵盖了 Java 编程语言、设计模式、JVM 内存模型、ClassLoader 结构、UML 模型图、OSGi 框架、Spring 框架、iBatis 框架、Java 序列化...
本文档是关于软件工程师程序员Java面试题和答案的总结,涵盖了Java语言的特点、面向对象和面向过程的区别、基本数据类型、标识符的命名规则、instanceof关键字的作用、Java自动装箱与拆箱等知识点。 一、Java语言的...
Java面试总结面试总结PDF
面试总结
面试总结
在2018年的秋季招聘中,iOS面试成为众多求职者关注的焦点。这个时期的面试不仅反映了当时的iOS技术趋势,也为后来的求职者提供了宝贵的参考经验。以下是对2018年秋招iOS面试中常见知识点的详尽解析: 1. **...
【标题】:“面试录音&面试总结.zip”是一个包含面试过程记录和回顾的压缩文件,它可能包括了求职者与招聘方的对话音频以及面试后的个人反思和总结文档。这类文件对于求职者来说是宝贵的资源,可以帮助他们分析面试...
### 图像面试总结 在近期参加的一系列技术面试过程中,遇到了不少与图像处理相关的技术问题。为了更好地总结经验,本文将对这些面试中涉及到的知识点进行详细的归纳与解析。 #### 1. 指针与图像数据结构 面试中...
【西安2010Java面试总结】 在2010年的西安Java面试中,面试官主要关注以下几个核心知识点,这些内容对于Java开发者来说至关重要,也是面试官用来评估候选人技术实力的关键标准。 1. **Java基础知识**:面试通常从...
【创迹面试总结】 面试是求职过程中的关键环节,它不仅是公司评估求职者能力与适应性的途径,也是求职者展示自身素质和专业素养的机会。在创迹面试中,面试官通常会关注以下几个方面: 1. **项目经验**:面试官会...
Java面试大全涵盖了大量的技术知识点,这些内容通常会出现在各大公司的面试过程中。为了帮助你更好地准备,以下是基于描述中提到的“31个文档”可能涉及的一些核心Java面试知识点的详细阐述: 1. **基础概念**:...
【Java开发面试总结】 在Java开发的面试过程中,面试官通常会关注候选人的技术栈是否广泛且深入。这里,我们重点讨论几个关键知识点,包括前端技术、JavaScript、Ajax、Java基础以及Web开发框架。 1. **前端开发...
这份面试总结涵盖了从人力资源面试到专业技能测试的关键点,旨在帮助应聘者充分准备。以下是一些重要的知识点: 1. **HR面试**: - 自我介绍:清晰地表述个人背景、教育经历和相关工作经验,展示与职位相关的技能...