• 面试题!!!


    1.用两种方式根据部门号从高到底,工资从低到高列出每个员工的信息。

    employee:

    eid,ename,salary,deptid;

    select * from employee order deptid desc,salary.

    2.spring是什么?根据你的理解详细谈谈的你见解。

    目的:解决企业应用开发的复杂性

    功能:使用基本的javaBean代替EJB,并提供了更多的企业应用功能

    范围:任何Java应用

    简单来说,spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架。

    轻量:从大小与开销两方面而言的Spring都是轻量的。完整的spring框架可以在一个大小只有1MB多的JAR文件里发布

    并且spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的,典型的,spring应用中的对象不依赖于Spring的特定类。

    控制反转 ——Spring通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了ioc,一个对象依赖的其他对象通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。

    不是对象从容器中查找依赖,而是容器在对象初始化不等对象就主动将依赖传递给它。

    面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(比如审计和事务管理)进行内聚性的开发。应用对象之只实现它们应该做的—完成业务逻辑而已。它们不负责其他系统级关注点,(比如 日志或事务支持)。

    容器——Spring包含并管理应用对象 的配置和生命周期,在这个意义它是一种容器,你可以配置你的每个Bean 如何被创建——基于一个可配置原型,你的bean可以创建一个单独的事例或者每次需要时都生成一个新的实例。它们是如何相互关联的,然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大于笨重的。难以使用。

    框架—— spring可以简单的组件配置,组合成复杂的应用。在sprig中,应用对象声明式的组和,典型的事在一个XML文件里。Spring也提供了很多基础功能(事务管理,持久化框架集成等)。

    3.项目中如何体现spring中的切面编程?

    面向切面编程:主要事横切一个关注点,将一个关注点模块化成一个切面,在切面上声明一个通知(advice)和切入点

    (pointcut);通知、;是指切面在某个特定的连接点(代表一个方法的执行,通过声明一个org.aspectj.JoinPoint类型的参数可以使通知(advice)的主题部分获得连接点信息。)切入点的内容是一个表达式。

    spring中的切面编程最多的地方,声明式事务管理。

    a.定义一个事务管理器

    b.配置事物特性 (声明通知。)

    c.切入点。

    4.spring的事物配置

    spring的声明事务配置

    1.<!--  配置sessionFactory-->

    <bean id="sessionFactory"

    class="org.springframework.orm.hibemate3.LocalSessionFactoryBean">

    <property name="configLocation">

    <value>/WEB-INF/calss/hibernate.cfg.xml</value>

    </property>

    </bean>

    2.配置事物管理器

    <bean id="transactionManger"

    class="org.springframework.orm.hibemate3.HibemateTransactionManager">

    <property name="sessionFactory">

    <reflocal="sessionFactory"/>

    </property>

    </bean>

    3.配置事物特性

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

    <tx:attributes>

    <tx:method name="add*" propagation="REQUIRED"/>

    <tx:method name="update*" propagation="REQUIRED"/>

    <tx:method name="del*" propagation="REQUIRED"/>

    <tx:method name="*" read-only="true"/>

    </tx:attributes>

    </tx:advice >

    4.配置那些类的那些方法配置事物

    <aop:config>

    <aop:pointcut id=“allManagerMethod" ession="execution(*cn.happy.service.impl.*.*(..))"/>

    <aop:advisor advisor advice-ref="txAdvice" pointcut-ref=“allManagerMethod">

    </aop:config>                     

    5个不同的事物隔离级别:

    DEFAULT:默认的隔离级别

    READ-COMMITTED:保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务为提交嘚的数据。可能出现不可重复读和幻想读。

    READ-UNCOMMITTED:这是事务最低的隔离级别。它允许另外一个事务可以看到这个事务未提交的数据。不可重复读和幻想读。

    REPEATABLE-READ:这种事务级别可以防止脏读,不可重复。可能出现幻像读。它保证了一个事务不能读取另一个事务

    未提交的数据外,还保证避免不了不可重复读。

    SERIALIABLE:这是花费最高代价的但最可靠的事务隔离级别。事务被处理为顺序执行。防止脏读,不可重复读外

    还避免了幻像读。

    7个事物传播行为

    REQUIRED:如果存在一个事务,则支持当前事务。如果没有则开启新的事务。

    SUPPORTS:如果存在一个事务,支持当前事务。如果没有。则非事务的执行。

    REQUIRES_NEW:总是开启一个新事务。如果一个已经存在,则将这个存在的挂起。

    NOT_SUPPORTED :总是非事务的执行,并挂起任何存在的事务。

    NEVER:总是非事物 地执,如果存在一个活动事务,则抛出异常。

    NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按TranscationDefinition.PROPAFATION_REQUIRED属性执行。

    嵌套事务就是内层事务依赖于外层事务,外层失败时,会回滚内层事务所做的动作。尔内层事务操作失败并不会引起外层事务的回滚。

    REQUIRED:我们首先得事务传播行为。它能够满足我们大多数的事务需求。

  • 相关阅读:
    解决方法 svn checkout 更改用户名密码/断网续传
    解决方法 cannot be resolved as a type
    解决方法 Syntax error on token "enum", invalid Expression
    使用笔记 Sublime text 持更
    解决方法 cvs或svn上下载的新项目无build path
    解决方法 卸载jdk以及重新安装jdk
    配置笔记 eclipse, jdk, tomcat, maven, mysql, alt+/
    ubantu配置java环境变量
    写给自己的!
    数据设计模式
  • 原文地址:https://www.cnblogs.com/wangdan123/p/7442807.html
Copyright © 2020-2023  润新知