Struts、Spring和Hibernate常见问题总结

1. Spring ThreadLocal和线程同步机制相比有什么区别

答:ThreadLocal是通过每个线程中创建个副本方式实现线程同步,而Java中默认同步机制是通过对象锁的方式,每次操作只能允许一个线程,而ThreadLocal则可以同步,在性能方面ThreadLocal通过一空间的方式换取时间,而java默认同步机制,则是以时间换取空间。注意:ThreadLocal不属于数据共享,而对象锁属于数据共享,当某个线程改变数据时,对ThreadLocal而言是不可见的,而使用对象锁的方式是可见的


2. Spring HibernateTemplate和Hibernate Session操作数据的区别

答:HibernateTemplate封装大部分的CRUB操作,使用方式和Session差不多,并且提供2种使用原生态Session对象操作数据方法(execute(HibernateCallback),executeFind(HibernateCallback))。

   相比使用Session优势,主要体现在HibernateTemplate封装大部分的session操作,易于使用不必要显示关闭和获取session,简化Hibernate使用。


3.Hibernate中,持久状态、临时状态和游离状态的标志?

答:在Hibernate中,一个对象的OID为Null,则Session认为该对象为临时对象。对象有OID,在Session缓存中没有该对象,则Session默认该对象为游离状态。Sesion在检查该对象有OID,并且在缓存中也存在,则认为该对象处于持久状态。


4.Hibernate中的save()和persist()区别

答:两者都能将临时对象持久化,但save()会预先执行insert语句,并返回OID,而persist()不会预先执行也不会返回OID,它会在session clean()或flush()时才执行,这样可以提高负责处理长时间运行事务的程序的健壮性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值