`

JDBC事务管理

 
阅读更多

好吧,我承认,我蛋疼了。真的很疼很疼。。。。。公司的项目不许用ssh,也不许用ssi...

  1>好吧。。action写个调度还是比较easy的..用了三天把调度了,采用的是struts2的思想,一个reuquest一个实例,不过没有为action产生代理。。这个我想也没啥好蛋疼的。。

  2> 连结池采用的是c3po,自己写连接池管理器。。

  3> 也就是今天碰到的问题:事务.....

  加事务啊。。。。在service控制事务。。。目前蛋疼中....

  问题:   
  1。如何保证同一个事务方法中所有dao 用的是同一个connection??
  2。保证嵌套事务?????

  其它问题。。。暂时未知ing.......

  目前想法:  
1: 用事务的方法第一行,开启事务。。。ThreadLocal保存开启事务后的connection..然后将ThreadLocal,放到context中(缓存中)..在各个dao里面,直接从context中获取connection....不知道可不可行??是个大大的XXXXX
2> 用一个count来记录事务的层数? 每嵌套一层+1. 提交一次-1 最后为0时,就connection.commit()????


求大牛指点。。。。

 

------------------------------------------------------------------------------------------

 

你要实现这个功能可没那么简单啊,如果是类似于 REQUIRED 的还好弄一些,要弄 REQUIES_NEW 的就非常复杂了!

你要做的这个不要说是你的应用了,就算是 J2EE 应用服务器这种东西的实现也是有优劣的。

在 ThreadLocal 绑定 Connection,在 DAO 中从 ThreadLocal 中获得 Connection

使用动态代理,将业务逻辑方法代理,在代理中获得 Connection 并置于 ThreadLocal 中,并在代理中处理事务,这样的话这一业务逻辑调用所有的 DAO 方法均纳入到了一个事务之中。

楼主提的问题是 J2EE 设计模式之一——事务上下文模式

下面这些帖子有同样的问题,可以参考一下:

jdbc如何实现事务处理?(例如先进行读取在进行修改能在一个事务里)
http://topic.csdn.net/u/20090323/17/29237aab-ee3e-4e16-b9c4-53856425022c.html

请教一下,在纯的JDBC中,如何项目采用分层了DAO层,服务层和SERVLET控制层,,那么怎么在servlet中启用JDBC的事务?
http://topic.csdn.net/u/20080705/18/d894b5e5-8b7b-4560-af16-e4b9d8405681.html

将connection存放在Threadlocal里和数据库连接池的区别
http://topic.csdn.net/u/20080731/22/9af1fa06-2c82-4790-bee0-0274a66f3ae9.html

大家来讨论下业务层(BO)该做什么事?该怎样做事?
http://topic.csdn.net/u/20090528/21/160f4629-8985-4a05-89ed-7b4bdcf9bb0f.html

多个线程共享一个connection的问题
http://topic.csdn.net/u/20071128/12/6f085b57-a1b5-4100-a036-f43ef5ab3f8c.html

这里还有一个帖子,虽然涉及 JPA 的,但在 J2SE 环境下 JPA 与 JDBC 没啥区别:

EJB3之JPA程序结构,完美的异常处理
http://topic.csdn.net/u/20090829/20/6e73877e-af46-4f98-9fce-f574495b550c.html

声明一下,我不认同这位帖主的做法(其采用 Runnable 接口),不过可以借鉴一下,作为一种思路也行。

分享到:
评论

相关推荐

    JDBC事务管理.docx

    JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...

    JDBC事务管理的简单实现

    "JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...

    spring JDBC事务管理

    标题中的“Spring JDBC事务管理”是指在Spring框架中如何利用JDBC进行数据库操作时的事务控制。Spring提供了多种方式来管理事务,使得开发者能够在复杂的业务逻辑中更好地控制数据的持久化过程,确保数据的一致性和...

    JDBC事务管理项目

    本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库事务,确保数据的一致性和完整性。 **事务的概念** 事务是数据库操作的基本单元,它包含了对数据库的一系列操作,这些操作要么全部成功,...

    实例详解Spring JDBC事务管理.doc

    Spring JDBC事务管理 Spring框架提供了两种事务管理方式:编程式的事务管理(Programmatic transaction management)和声明式的事务管理(Declarative transaction management)。在本文中,我们将以JDBC事务管理...

    JDBC事务管理及SavePoint示例Java开发Jav

    这篇12页的PDF文档,"JDBC事务管理及SavePoint示例Java开发Java经验技巧",很可能是详细讲解了这两个主题,并提供了一些实际的编程示例。 首先,让我们来深入理解JDBC事务管理。在Java中,JDBC提供了四种事务隔离...

    JDBC事务管理(添加dbcp和c3p0测试.zip

    首先,让我们了解JDBC事务管理。在JDBC中,事务的开始、提交和回滚可以通过Connection对象来控制。`setAutoCommit(false)`会禁用自动提交,这时就需要手动调用`commit()`或`rollback()`来决定事务的最终状态。例如:...

    spring hibernate,spring jdbc事务管理

    两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...

    jdbc事务及分页

    ### JDBC事务管理与分页策略详解 在Java开发中,JDBC(Java Database Connectivity)作为连接数据库的标准API,被广泛应用于数据操作。本文将深入探讨JDBC中的事务处理机制及其在实际应用中的示例,同时对比分析两...

    Spring JDBC与事务管理

    javaEE 实验三 Spring JDBC与事务管理, 一、实验目的 1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握...

    spring jdbc 事务

    综上,Spring JDBC事务管理是Spring框架中重要的部分,通过理解并掌握其原理和使用方法,可以帮助开发者构建稳定、可靠的数据库应用程序。在实践中,要根据项目的具体需求选择合适的事务管理策略,并注意处理事务...

    Java事务管理学习之JDBC详解

    Java事务管理学习之JDBC详解是Java事务管理学习的重要组成部分,文章详细介绍了Java事务管理学习之JDBC的相关知识点,包括事务的概念、特性、类型、JDBC事务管理等。 一、事务的概念 事务是数据库的逻辑工作单位,...

    JDBC的事务初探

    博文链接(https://superleo.iteye.com/blog/130876)中可能提供了对JDBC事务管理的源码分析,可以深入理解事务管理的内部实现。 10. **相关工具** 在开发过程中,可以使用像SQL Developer、IntelliJ IDEA等IDE...

    JDBC事务 JTA事务 传播特性 隔离级别

    **JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...

    myBatis系列之七:事务管理

    JDBC事务管理器适用于简单的应用程序,而Spring事务管理器更适合于使用Spring框架的项目,因为它提供了更高级的事务控制和回滚策略。 4. **SqlSessionFactory和SqlSession的角色**:SqlSessionFactory是MyBatis的...

    MyBatis 事务管理解析:颠覆你心中对事务的理解!.docx

    MyBatis 支持两种主要的事务管理方式:JDBC 事务管理和托管事务管理。 1. JDBC 事务管理(JdbcTransaction): 这是 MyBatis 默认的事务管理方式,当不使用任何外部框架时,MyBatis 将直接使用 JDBC API 来管理...

    JDBC事务和JTA(XA)事务

    JDBC事务和JTA(XA)事务 JDBC事务和JTA(XA)事务是两种常见的数据库事务类型,它们都可以用来...JDBC事务和JTA(XA)事务都是数据库事务管理机制,每种机制都有其优点和缺点,选择哪种机制取决于具体的应用场景和需求。

    spring事务操作试验

    在Spring中,DataSourceTransactionManager是用于JDBC事务管理的默认实现。使用它,你可以控制事务的开始、提交、回滚以及设置事务隔离级别。 在Spring事务中,有几种常见的隔离级别可供选择,包括读未提交(READ ...

Global site tag (gtag.js) - Google Analytics