凌动小生的Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2015年1月7日

摘要: 在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。请通过以下方式下载github源代码:git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git本地事务和分布式事... 阅读全文
posted @ 2015-01-07 23:28 凌动小生 阅读(551) 评论(0) 推荐(0) 编辑

摘要: 在本系列的上一篇文章中,我们讲到了使用动态代理的方式完成事务处理,这种方式将service层的所有public方法都加入到事务中,这显然不是我们需要的,需要代理的只是那些需要操作数据库的方法。在本篇中,我们将讲到如何使用Java注解(Annotation)来标记需要事务处理的方法。这是一个关于Jav... 阅读全文
posted @ 2015-01-07 23:23 凌动小生 阅读(388) 评论(0) 推荐(0) 编辑

摘要: 在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在service层中声明一个TransactionTemplate。在本篇文章中,我们将使用Java提供的动态代... 阅读全文
posted @ 2015-01-07 23:22 凌动小生 阅读(568) 评论(0) 推荐(0) 编辑

摘要: 在本系列的上一篇文章中,我们讲到了使用TransactionManger和ConnectionHolder完成线程安全的事务管理,在本篇中,我们将在此基础上引入Template模式进行事务管理。Template模式大家应该都很熟悉,比如Spring就提供了许多Template,像JdbcTempla... 阅读全文
posted @ 2015-01-07 23:21 凌动小生 阅读(437) 评论(0) 推荐(0) 编辑

摘要: 在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的。在本篇文章中,我们将引入另外一种机制(ConnectionHolder)来完成事务管理。ConnectionHolder的工作机... 阅读全文
posted @ 2015-01-07 23:19 凌动小生 阅读(1998) 评论(0) 推荐(1) 编辑

摘要: 在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connection对象,所以不同DAO中的操作不在同一个事务里面,从而导致事务失败。从中我们得出了教训:要避免这种失... 阅读全文
posted @ 2015-01-07 23:17 凌动小生 阅读(339) 评论(0) 推荐(0) 编辑

摘要: 在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例。BankService的功能为:某个用户有两个账户,分别为银行账户和保险账户,并且有各自的账户号,BankService的t... 阅读全文
posted @ 2015-01-07 23:16 凌动小生 阅读(343) 评论(0) 推荐(0) 编辑

摘要: Java中的事务处理有多简单?在使用EJB时,事务在我们几乎察觉不到的情况下发挥着作用;而在使用Spring时,也只需要配置一个TransactionManager,然后在需要事务的方法上加上Transactional注解就行了。Java的事务处理之所以这么简单是因为框架在背后为我们做了太多的工作。... 阅读全文
posted @ 2015-01-07 23:14 凌动小生 阅读(821) 评论(0) 推荐(0) 编辑