Java事务处理的基本问题.ppt

上传人:max****ui 文档编号:6358395 上传时间:2020-02-23 格式:PPT 页数:13 大小:605.36KB
返回 下载 相关 举报
Java事务处理的基本问题.ppt_第1页
第1页 / 共13页
Java事务处理的基本问题.ppt_第2页
第2页 / 共13页
Java事务处理的基本问题.ppt_第3页
第3页 / 共13页
点击查看更多>>
资源描述
Java事务处理的基本问题 Java中的事务处理有多简单 在使用EJB时 事务在我们几乎察觉不到的情况下发挥着作用 而在使用Spring时 也只需要配置一个TransactionManager 然后在需要事务的方法上加上Transactional注解就行了 Java的事务处理之所以这么简单是因为框架在背后为我们做了太多的工作 这样 我们虽然可以快速地完成开发工作 但是一旦程序出现问题 在一阵google和stackoverflow之后 你估计还是一筹莫展 作为一个有技术追求的程序员 你应该了解Java事务的底层工作原理 这是一个关于Java事务处理的系列文章 请通过以下方式下载github源代码 gitclone 本系列文章将在不依赖Spring和JavaEE容器的条件下讲解Java中事务处理的基本方法与原理 包含以下文章 一 Java事务处理的基本问题 二 失败的案例 三 丑陋的案例 四 成功的案例 自己实现一个线程安全的TransactionManager 五 Template模式 六 使用动态代理 DynamicProxy 完成事务 七 像Spring一样使用Transactional注解 Annotation 八 分布式事务入门例子 Spring JTA Atomikos Hibernate JMS 一 Java事务处理的基本问题 Java通过JDBC与数据库进行交互 这是一个如今多数程序员都不会直接使用的技术 我们更倾向于使用Hibernate和Mybatis 但是 他们在底层都需要JDBC与数据库通信 事务处理亦是如此 那么 我们首先来看看JDBC提供的事务处理API 1 JDBC提供的事务处理API JDBC提供的事务处理API非常少 请不要被Spring中事务处理的那一堆源代码所打击得信心尽失 这些框架提供的事务处理功能归根结底主要通过以Connection类的方法完成 Connection setAutoCommit boolean Cmit Connection rollback 在Spring的事务处理源代码中 有很多都是处理多线程的 另外一些使用了一些设计模式 不要惊慌 在本系列中 除了系列八 你将看不到任何Spring的影子 我们会通过简单的代码来学习Java事务 学完之后 你可以阅读一下Spring的事务处理源代码 然后将本系列中的事务处理原理与Spring对比 你会发现 Spring要面临与处理的问题也是本系列文章中遇到的问题 2 本地事务和分布式事务 本地 LocalTransaction 事务指只有一个数据源参与的事务 比如只有数据库或者只有JMS 分布式事务 DistributedTransaction 指有多个数据源同时参与的事务 比如一项操作需要同时访问数据库和通过JMS发送消息 或者一项操作需要同时访问两个不同数据库 对于分布式事务 Java提供了JTA规范 它的原理与本地事务存在不同 鉴于多数情况下Java事务为本地事务 本系列主要讲解本地事务 而在系列八中有分布式事务的入门例子 3 线程安全 线程安全是Java事务处理的一大难点 比如一个DAO类维护了一个Connection实例变量 两个线程同时使用该DAO类与数据库交互 其中一个在使用完Connection后将其关闭 而此时另一个线程正在使用该Connection访问数据库 这时另一个线程对数据库的访问将失败 在本系列的后续文章中 我们将学到如何处理这样的问题并开发线程安全的程序 4 Service层和DAO层 通常来说 数据持久化层又分为Service层和DAO层 Service层用于完成与业务逻辑有关的工作 并且Service层包含了工作单元 Unitofwork 也即Service层中的方法为事务作用的边界 DAO层用于完成对数据库的实际操作 增删改查 有时在使用Hibernate或是JPA时我们也会直接在Service层访问数据库而省略掉DAO层 在本系列中 我们会用一个BankService例子贯穿始终 该BankService用于将用户银行账户 BankAccount 中的存款转帐到该用户的保险账户 InsuranceAccount 中 两个账户对应有不同的数据库表 BankService需要两个DAO类协同起来工作 一个负责银行账户表的操作 另一个负责保险账户表操作 这是一个典型的事务处理例子 在下一篇文章中 我们将学习一个关于该BankService事务处理失败的案例 循环中运用事务处理可以减少连接数据库的次数 从而提高程序的速度jforum因为你才会更精彩
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!