下列能自动为上下文中定义的所有的Bean生成代理的类为:()
A. ProxyFactoryBean
B. BeanNameAutoProxyCreator
C. DefaultAdvisorAutoProxyCreator
若Hibernate的Session出现了Spring中的HibernateTemplate中没有的方法,则:( )
A. 无法使用Spring的HibernateTemplate了
B. 可以使用HibernateTemplate的回调方法
以下程序的打印结果是什么:( )
1) tx = session.beginTransaction();
2) Customer c1=(Customer)session.load(Customer.class,new Long(1));
3) Customer c2=(Customer)session.load(Customer.class,new Long(1));
4) System.out.println(c1==c2);
5) mit();
6) session.close();
A. 运行出错,抛出异常
B. 打印false
C. 打印true
以下程序代码对Customer的name属性修改了两次
1) tx = session.beginTransaction();
2) Customer customer=(Customer)session.load(Customer.class,new Long(1));
3) customer.setName("Jack");
4) customer.setName("Mike");
5) mit();
执行以上程序,Hibernate需要向数据库提交几条update语句:( )
A.0 B. 1 C. 2 D. 3
以下哪一种检索策略利用了外连结查询:( )
A. 立即检索
B. 延迟检索
C. 迫切左外连结检索
假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况:( )
1) Session session=sessionFactory.openSession();
2) tx = session.beginTransaction();
3) Customer customer=(Customer)session.get(Customer.class,new Long(1));
4) mit();
5) session.close();
6) Iterator orderIterator=customer.getOrders().iterator();
A. 编译出错
B. 编译通过,并正常运行
C. 编译通过,但运行时抛出异常
如果让数据库中的表与POJO对应,我们必须通过:( )映射
A. *.class
B. *.xml
C. *.hbm.xml;
D. *.java
我们在实用Set方式映射一对多单向关联时,下列那句话是正确的:( )
A. 不可以于重复内容出现,是用new ArrayList()实现
B. 可以出现重复内容,是用new HashMap()实现
C. 不可以出现重复内容,是用new HashSet()实现
D. 以上答案都不对
如果采用Spring连接数据,必须在Spring的核心配置文件中applicationContext.xml中标签下配置数据源:( )
A. <bean id="dataSource" class="mons.dbcp.BasicDataSource"/>
B. <bean list="dataSource" class="mons.dbcp.BasicDataSource"/>
C. <bean map="dataSource" class="mons.dbcp.BasicDataSource"/>
D. <bean set="dataSource" class="mons.dbcp.BasicDataSource"/>
Spring框架提供的特性包括:( )
A. 依赖注入
B. 非J2EE下的声明式编程
C. 简化对Hibernate的使用
D. 提供了和EJB完全相同的事务处理
依赖注入有三种实现方式,分别包括:( )
A. Interface Based
B. Constructor Based
C. Setter Based
D. Class Based
下列属于Spring的通知类型的为:( )
A. MethodBeforeAdvice
B. ThrowsAdvice
C. MethodAfterAdvice
D. AfterReturningAdvice
struts的工作原理
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
Hibernate中getCurrentSession()与OpenSession()方法的区别?
1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭
Spring框架中AOP的思想和好处。
Aop是OOP的延续,AOP实际是GoF四人组设计模式的一种扩展,设计模式所追求的是降低代码之间的耦合度,增加程序的灵活性和可重用性,AOP实际上就是设计模式所追求的目标的一种实现。
AOP就是实现分散关注的编程方法,它将“关注”封装在“方面”中。
Spring中基于AOP实现的业务管理机制,事务管理就是J2EE应用中一个横切多个对象的横切关注点的例子。
通过使用AOP来提供声明式事务管理,即可通过Spring实现基于容器的事务管理(从本质上来讲,Spring的事务管理是基于动态AOP)。
通过Hibernate写出一个最save()方法实现一个对象的保存
User user=new User();
user.setName(“zx”);
Transaction tx=session.beginTransaction();
session.save(user);
mit();
Public void save(Object object){
Session session=HibernateSessionFactory.getSession();
Transaction tr=session.beginTransaction();
Session.save(object);
mit();
session.close();。