Spring事务管理-了解Spring参考、全局/本地、编程/声明-两个问题
我正在使用SpringFramework 3.0.5和Hibernate框架,现在我开始使用SpringTransactionManagement。我有一些问题,只是想了解Springs Transactionmanagement是如何工作的 1) 我在Spring参考资料中读到: a) 跨不同事务API(如Java事务API(JTA)、JDBC、Hibernate、Java持久性API(JPA)和Java数据对象(JDO)的一致编程模型 b) Spring解决了全局和本地事务的缺点。它使应用程序开发人员能够在任何环境中使用一致的编程模型。您只需编写一次代码,就可以从不同环境中的不同事务管理策略中获益 c) 使用EJBCMT或JTA的唯一替代方法是使用本地事务(如JDBC连接上的事务)编写代码的日子一去不复返了,如果您需要在全局容器管理的事务中运行代码,那么代码将面临巨大的返工。使用Spring框架,只需要更改配置文件中的一些bean定义,而不需要更改代码 从a)我了解到,我可以将这些API与Spring一起使用,而无需更改代码 从b)我了解到我可以在不更改代码的情况下使用全局或本地事务* 从c)我了解到,在不同API和全局/本地事务之间切换时,我需要更改代码 现在我想知道什么是正确的 =>我需要更改代码吗?在不同的API之间切换时?在本地和全局事务之间切换时?(或者它是否可能依赖于Prorgamatic和declarative事务管理?) 2) 我还有一个问题:我真的想知道编程事务管理的用途是什么?我读到的每一篇文章都建议使用声明式事务管理 我在spring参考中也读到了这一点: d) 通过编程事务管理,开发人员使用Spring框架事务抽象,它可以运行在任何底层事务基础设施上。使用首选的声明性模型,开发人员通常只编写很少或没有编写与事务管理相关的代码,因此不依赖于Spring框架事务API或任何其他事务API 从d)我了解到:通过编程事务管理,我可以使用任何底层事务基础设施。。。这意味着什么?上面提到的不同API 并且:使用声明式,我不依赖于任何api =>这不一样吗?当我可以使用任何底层api时,我不依赖任何api。我真的不明白这一点 区别在哪里?我只知道声明性事务管理更轻量级,我不必自己启动事务,捕获异常并处理它,等等。但是编程事务管理有什么用呢 谢谢你的回答!:-)Spring事务管理-了解Spring参考、全局/本地、编程/声明-两个问题,spring,transactions,Spring,Transactions,我正在使用SpringFramework 3.0.5和Hibernate框架,现在我开始使用SpringTransactionManagement。我有一些问题,只是想了解Springs Transactionmanagement是如何工作的 1) 我在Spring参考资料中读到: a) 跨不同事务API(如Java事务API(JTA)、JDBC、Hibernate、Java持久性API(JPA)和Java数据对象(JDO)的一致编程模型 b) Spring解决了全局和本地事务的缺点。它使应用程
回答得很好,谢谢!为了确保我理解:1)在不同的API和/或全局/本地事务之间切换时,我不必更改代码,只需更改配置。对的2)我想我理解这一点,但我想知道如果我使用编程事务管理并希望切换API(或在全局/本地事务之间切换),会发生什么?那么我必须对我的代码进行修改,还是不修改?我还了解到,在使用decl时,我有更多的选项来定义事务行为。transman,但这肯定是错误的,对吗?谢谢:-)@nano7:1)更正声明性/编程性更改意味着使用SpringAPI的不同部分,因此这涉及到代码更改。2) 编程API独立于底层技术,就像声明式风格一样。当使用编程风格时,您可以获得更大的灵活性,但您很少需要这种灵活性。帮助,我不确定我是否理解这一点:a)->当我使用声明式API时,我想将例如从Hibernate(带有JDBC)更改为JTA,我不必更改代码,只需更改配置。b) ->当我使用编程API并且我想从Hibernate(使用JDBC)更改为JTA时,我必须更改代码和配置=>因此使用编程API的缺点是在JTA、JDO、JPA、JDBC之间切换时必须更改代码。。。。等等对吗-(谢谢!:-)@nano7:No:编程API独立于底层技术,就像声明式API一样。哦,好的。很抱歉所以,不