Java Web面试题(二)

1.Struts2是怎样进行值封装的?
答:Suts2的值封装实际上是采用了OGNL表达式。 Struts2的拦截器经过模型驱动
的会先判断 Action是否实现了 ModelDriven,如果是则拿到模型的实例放在了栈的顶部,到属性驱动的时候会从栈里把栈顶的实例取出来,从页面传进来的值放在一个map集合中,通过map集合进行迭代,通过OGNL技术把值封装到实例中。

2.Hibernate中get)和load0有什么不同之处?
答:把getO和 load放到一起进行对比是 Hibernate面试时最常问到的问题,这是因为
只有正确理解get0和 load这二者后才有可能高效地使用 Hibernate geto和load0的最大
区别是,如果在缓存中没有找到相应的对象,geo将会直接访问数据库并返回一个完全初
始化好的对象,而这个过程有可能会涉及多个数据库调用;而1oadO方法在缓存中没有发现对象的情况下,只会返回一个代理对象,只有在对象 getlo之外的其他方法被调用时才会真正去访问数据库,这样就能在某些情况下大幅度提高性能。读者也可以参考 Hibernate中geO和 load的不同之处,其中对该问题进行了更细致的讨论。

3. Hibernate中save()、 persist()和 saveOrUpdate(这3个方法的不同之处?
答:除了g0和 load,这又是另外一个经常出现的 Hibernate面试问题。这3个方法
即 saveD、 saveOrUpdateO和 persist(0都是用于将对象保存到数据库中的方法,但其中有些细微的差别。例如, saveD只能 INSERT记录,但是 saveOrUpdateO可以进行记录的 INSER和 UPDATE。还有, saveD的返回值是一个 Serializable对象,而 persist方法返回值为voic者还可以访问 saveD、 persist(O以及 saveOrUpdateO,找到它们所有的不同之处。

你可能感兴趣的:(面试题,java,Java,Web面试题)