JAVAWEB高级编程2复习

  • 格式:pdf
  • 大小:120.46 KB
  • 文档页数:3

以下内容可以从ppt或者课本上找。

简答占了一半的分数,本复习中包含AB卷
不能提前交卷,一般是考试1个小时后交卷。

1简答:ORM,IOC,AOP,HQL分别是什么单词的简写,分别的含义是什么?进行解释。

2简答:切入点,依赖注入,面向方面编程,编程式事务分别的含义是什么?进行解释。

3简答:hibernate是什么?spring是什么?
4简答:hibernate中的对象状态有哪三种?
持久化层的缓存的并发访问策略有哪四种?Session的5个主要方法及功能?
Hibernate的缓存分为哪两种?
Hibernate自带的分页机制是什么?
两种依赖注入的类型都是什么?
悲观锁与乐观锁的比较?
Spring框架的优点都有什么?
5Spring AOP中的通知类型
6如果你已知某个实例的持久化标识,你可以使用Session的()方法来获取它
7在Hibernate中,关于数据库的方言有什么作用
8清理Hibernate缓存的方法有什么?
9在Spring中,配置Hibernate事务管理器(Hibernate TransactionManager)时,需要注入的属性名称是()。

10使用Session的()会把对象的状态从数据库中移除。

11Hibernate中load和get方法的区别
12延迟加载的参数lazy的用法,在多对一得配置中,关于fetch的配置的用法
13设值注入的优点
14声明式事务中事物的传播特性,事务的规则有哪些,分别的含义
15编程题是有关SSH的综合应用
1hibernate中的对象状态有哪三种?
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。

脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;托管对象状态发生改变,hibernate不能检测到。

2Session的5个主要方法
1).save,persist保存数据,persist在事务外不会产生insert语句。

2).delete,删除对象
3).update,更新对象,如果数据库中没有记录,会出现异常。

4).get,根据ID查,会立刻访问数据库。

5).Load,根据ID查,(返回的是代理,不会立即访问数据库)。

3Hibernate的缓存分为哪两种?
一级缓存,单个会话的对象缓存。

二级缓存,可插拔的缓存插件,由于SessionFactory对象的生命周期和应用程序的生命周期对应,二级缓存对应于应用程序的生命周期。

4持久化层的缓存的并发访问策略有哪四种?
1)事务型:仅仅在受管理环境中适用。

它提供了Repeatable Read事务隔离级别。

对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。

2)读写型:提供了Read Committed事务隔离级别。

仅仅在非集群的环境中适用。

对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。

3)非严格读写型:不保证缓存与数据库中数据的一致性。

如果存在两个事务同时访问缓存中相同数据的可能,必须为该数据配置一个很短的数据过期时间,从而尽量避免脏读。

对于极少被修改,并且允许偶尔脏读的数据,可以采用这种并发访问策略。

4)只读型:对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。

5IOC(控制反转:Inverse of Control)是Spring的内核,AOP,声明式事务等功能都建立在该功能之上,它涉及到代码解耦,设计模式,代码优化等问题的考虑。

它包括两个方面的内容:其一是控制;其二是反转。

对于软件来说:控制反转即是某一接口的具体实现类的选择控制权从调用类中移除,转交给第三方裁决。

依赖注入DI(Dependency Injection):将调用类对接口的实现类的依赖关系由第三方注入,以移除调用类对接口实现类的依赖。

6切面(Aspect):从对象中抽取出来的横切性功能模块。

类似与OOP中的一个类。

由通知和切入点两部分组成。

7通知(Adivice):织入到目标类连接点上的一段程序代码。

切面的具体实现,例如具体的日志操作代码,一般是是切面中的某个方法。

8连接点(Joinpoint):目标对象中插入通知的地方。

即advice的应用位置。

spring中只支持是方法
9切入点(Pointcut):匹配连接点(Joinpoint)的断言。

连接点相当于数据记录,切点相当于查询条件,一个切点可以匹配多个连接点。

定义了advice应该被插入到什么样的Joinpoint点上,即advice的应用范围
10织入(Weaving):将增强添加到对目标类具体连接点上的过程。

将通知与目标对象结合在一起,生成新的对象的过程。

新的对象就是AOP Proxy。

Spring是在运行是完成织入工作的
11Hibernate支持两种锁机制:
即通常所说的“悲观锁”和“乐观锁”。

12悲观锁与乐观锁的比较:
悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。

但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受;
相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。

乐观锁机制往往基于系统中的数据存储逻辑,因此也具备一定的局限性,由于乐观锁机制是在我们的系统中实现,来自外部系统的更新操作不受我们系统的控制,因此可能会造成脏数据被更新到数据库中。

在系统设计阶段,我们应该充分考虑到这些情况出现的可能性,并进行相应调整(如将乐观锁策略在数据库存储过程中实现,对外只开放基于此存储过程的数据更新途径,而不是将数据库表直接对外公开)。

13集成SSH框架的系统从职责上分为四层:
表示层、
业务逻辑层、
数据持久层
域模块层,
14Hibernate自带的分页机制是什么?
hibernate自带的分页机制:获得Session对象后,从Session中获得Query对象。

用Query.setFirstResult():设置要显示的第一行数据,
Query.setMaxResults():设置要显示的最后一行数据。