spring 和hibernate整合时,进行事务管理器的配置,目的是为了什么,配置后和不配置有什么区别。

不要用官方语言,我初学者一个,回答得好的,有重赏
2024-11-24 10:03:00
推荐回答(1个)
回答1:

spring提供的是框架级的事务管理,在你使用session.beginTransaction();或tx.commit();的时候就是使用了hibernate的API,这就叫你的代码和hibernate耦合了。如果日后想用JTA或JPA来代替hibernate做持久化工作,你会发现这是一项艰巨的任务——太多代码要改了,几乎要把session.beginTransaction()或tx.commit()的代码都改掉。如果使用了spring的事务控制,你不再需要在代码中使用hibernate的API了,同样是用JTA或JPA来代替hibernate,只需要修改spring的配置文件就可以替换了持久层框架。这样的解决方案是不是十分优雅?这就是spring的魅力所在。当然你可能说“hibernate工作好好的,我为什么要替换持久层框架?”。这个问题很难回答,要套用一句俗语来回答就是:“无论多微小的概率,只要有机会发生的事,就肯定会发生!”当有一天因为hibernate出现不能解决的BUG,或者第三方数据库没有提供jdbc支持而你又必须使用,这时候就有必要替换hibernate了。话说回来,如果你确信自己不会替换hibernate,这样要不要和spring整合都是没所谓的,只是你没有遵从目前的最佳实践罢了。