我正在构建一个与域相关的Web应用程序,其中200-500用户(请求)每秒只保存数据。 我选择spring,Hibernate,Jboss。但是当我了解Spring和Hibernate集成时,spring doc会一次又一次地说出一些JTA术语。
所以现在问题。
我读了一些关于JTA但有点混乱的内容,这个JTA是指分布式事务吗? 如果上面的问题回答是,那么什么是分布式交易? 对我来说,分布式交易 - 在不同机器上执行的交易。 (这可能吗?意味着为什么交易将在不同的机器上发生,因为它们只是工作单元)
为什么hibernate和Spring关心JTA(任何实时示例)。
如果我有休眠,为什么我要关心JTA?(如果我的数据库在远程位置(不在本地),那么我应该关心,对吗?但为什么?(请解释)
JTA如何帮助实现良好的绩效?
什么是JTA和NON-JTA交易?
先谢谢你,请帮助我,我对这些技术感到有点新鲜和困惑。再次感谢。
答案 0 :(得分:1)
关于你的问题:
Java Transaction API(JTA)支持单个应用程序中的分布式事务(即使一个应用程序服务器中的多个EAR或WAR在技术上仍然是一个应用程序,因为只有一个服务器实例服务于所有EAR或WAR )。粗略地说,分布式事务是一种以原子方式在多个企业信息系统(EIS)中实现理论上无限数量的操作的机制 - 所有操作或不适用,而不仅仅是一些操作。
您对分布式交易的理解不太对。它与可能涉及不同机器的事实无关,而是归结为涉及多个EIS。
假设您有两个数据库,每个数据库都有一个持久性单元(在JPA中)。现在,您在应用程序中执行一些工作。从您的应用程序的角度来看,它只是一个工作单元,但对于您的数据库,每个工作单元都是一个单元。这通常使用应用程序服务器中的JTA进行协调。
Hibernate和Spring关心JTA,因为两者都只是使开发人员能够高效开发应用程序的框架。
例如,请参阅上面的一个。如果Hibernate和Spring阻碍分布式事务,相信我,项目会因缺少用户而死亡。
如果您只有一个数据库,则无需真正关心JTA,因为这样就可以使用“非本地JTA”事务,这些事务是资源本地(其中< em> resource 表示您的数据库, local 表示仅限于您的数据库。)
JTA无助于以任何方式取得良好表现。它只是在一个应用程序中管理分布式事务的规范。
我想你现在知道这个问题的答案了。 ;)