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,找到它们所有的不同之处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值