`
Joo
  • 浏览: 46293 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ibatis中的事物传播机制

阅读更多
我们这边在使用ibatis进行事务管理的时候遇到的了一个问题:IBATIS中好像不能设置事务的传播机制。

当存在方法foo()和doo(),并且在此两方法上都加上了事务管理。在foo()方法代码中调用了doo()方法,运行时就会报错提示已经存在一个事务。我记得在EJB中是可以设置事务的传播机制的比如Requirs、RequiresNew等让控制权在到达一个新的方法的事务中的时候选择继续沿用之前的额事务还是另外开启一个等。所以我们现在在比较底层的方法比如DAO和领域对象的方法上都没有添加事务,而是把事务加在了Action一层的方法上,但是感觉这样比较奇怪啊,不知道大家一般如何解决的? 谢谢!!!


抑或本来就不应该由ibatis来管理事务?但是当前的情况是不能用Hibernate,不能用Spring,没有EJB...-_-|||
分享到:
评论
6 楼 GandofYan 2008-10-17  
同意gumpgz的观点,
同时方法级别的事务管理,也会对以后的维护造成很大麻烦
5 楼 gumpgz 2008-10-16  
我认为事物不要写在方法内部,而是通过Connection或者便向的Connection的传递来控制实物。

这样可以解决在多个需要事物的方法在同时调用的问题。
4 楼 cyberblue 2008-09-06  
引用

setAutoCommit

void setAutoCommit(boolean autoCommit)
                   throws SQLException

    将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有 SQL 语句,并将这些语句作为单独的事务提交。否则,其 SQL 语句将成组地进入通过调用 commit 方法或 rollback 方法终止的事务中。默认情况下,新的连接处于自动提交模式下。

    提交发生在语句完成或执行下一条语句时,以先发生的情况为准。在语句返回 ResultSet 对象的情况下,该语句在已检索完最后一行 ResultSet 对象或已关闭 ResultSet 对象时完成。在更复杂的情况下,单个语句可以返回多个结果和输出参数值。在这些情况下,提交发生在检索到所有结果和输出参数值后。

    注:如果在事务处理期间调用此方法,则提交该事务。

    参数:
        autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用该模式
    抛出:
        SQLException - 如果发生数据库访问错误
    另请参见:
        getAutoCommit()



http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/sql/Connection.html#setAutoCommit(boolean)
3 楼 Joo 2008-09-05  
楼上说通过JNDI访问数据库的目的是什么? 而且把事务加在DAO上又是什么目的呢?
其实我在想是不是在一般的非EJB环境的javaEE应用中根本就没有所谓的食物传播机制这个概念,在EJB中是因为一个session bean可以调用其他的session bean,但是在非EJB下,Action之间(或者Service方法之间)相互调用基本上不存在吧
2 楼 cyberblue 2008-09-05  
在服务器上放一个非Auto-Commit的数据源,然后让iBATIS通过JNDI访问这个数据源,在DAO里自己commit,效果和事物一样。
1 楼 bottom 2008-09-05  
use spring or develop your own transaction manager (reinvent wheel)

相关推荐

    ibatis中iterate的例子

    在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...

    ibatis官方中文文档

    教程中还会详细讲解如何在iBATIS中定义和执行存储过程,包括输入参数、输出参数和结果集的处理。同时,这份教程可能还涵盖了异常处理、事务管理以及性能优化等相关内容。 **iBATIS存储过程调用** 在iBATIS中调用...

    ibatis总结 ibatis ibatis ibatis ibatis

    在Ibatis中,参数可以通过`#`或`$`符号传递。例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员...

    iBatis net版中文 1.6的

    iBatis 是一款著名的开源持久层框架,专为Java应用程序设计,它允许开发者将SQL语句直接嵌入到Java代码中,从而简化了数据访问层的开发。在.NET环境中,iBatis同样提供了相应的实现,即iBatis .NET版。这个版本与...

    ibatis 中文手册

    Ibatis 的主要目标是简化 Java 应用中的数据访问,通过提供一种映射 SQL 语句到 Java 方法的方式,使开发人员可以更专注于业务逻辑而不是数据库操作。Ibatis 提倡“SQL 应该写在 XML 中”,这样可以避免 SQL 污染...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    解析这个XML文件的过程涉及到DOM或SAX解析器,源码中这部分功能通常在`org.apache.ibatis.io.Resources`和`org.apache.ibatis.builder.Configuration`类中实现。 三、Executor执行器 Executor执行器是iBatis的核心...

    ibatis中文开发指南

    此外,书中还会详细介绍如何处理一对一、一对多、多对多等复杂的关联关系,以及如何利用iBATIS的插件机制进行扩展。 总之,iBATIS是一个强大的持久层框架,它降低了Java开发者与数据库交互的复杂度,提高了开发效率...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...

    ibatis2.0中文API

    在iBATIS中,通过配置XML映射文件,可以定义实体类与数据库表之间的复杂关联。例如,一个订单可以包含多个商品项,这是一对多关系;反之,一个商品可能被多个订单购买,这是多对一关系。iBATIS提供了集合映射和关联...

    ibatis拼接字符串

    在本篇文章中,我们将深入探讨如何使用 Java 编程语言结合 iBatis 框架进行 SQL 字符串的动态拼接。通过分析提供的代码片段,我们可以了解到在实际开发过程中,这种动态 SQL 的构建方式非常常见,尤其是在处理复杂的...

    ibatis demo,ibatis例子,ibatis示例

    7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则可以在多个SqlSession之间共享,但需要注意并发控制和数据一致性问题。 8. **插件支持**:...

    ibatis应对批量update

    通过上述步骤,我们可以在ibatis中实现高效的批量更新操作,极大地提升系统处理大规模数据的能力。这种方法不仅适用于Java环境下的开发,也适用于其他支持ibatis的编程语言。总之,ibatis提供的批量更新功能是处理...

    ibatis乱码解决方法(ibatis独立)

    本文将详细讨论如何解决Ibatis中的乱码问题,特别是涉及到GBK和ISO_8859_1编码格式时的解决方案。 首先,我们需要了解乱码产生的原因。乱码通常是因为字符编码不一致导致的。在Java和数据库之间进行数据交互时,...

    ibatis-api中文(真的中文)

    在iBATIS中,DAO层可以帮助你创建可重用的对象,这些对象可以直接执行SQL查询并处理结果。这个文档会详细介绍如何创建和使用DAO类,以及如何将它们集成到你的项目中,以实现高效且灵活的数据访问。 最后,`iBATIS-...

    iBatis java版中文的

    5. **缓存机制**:iBatis内置了缓存功能,可以提高查询效率,减少对数据库的访问次数。默认情况下,一级缓存是SqlSession级别的,二级缓存是全局的,可以通过配置启用和定制。 6. **插件支持**:iBatis允许开发者...

    ibatis 中sqlMap配置

    总结来说,iBatis中的SQLMap配置涉及到命名空间、别名、插入操作、主键获取、参数类型和结果映射等多个方面,理解和熟练掌握这些知识点对于高效地使用iBatis框架至关重要。通过合理的配置,可以有效地将Java代码与...

    ibatis 中文api

    1. **配置文件**:在Ibatis中,`mybatis-config.xml`是全局配置文件,包含了数据源、事务管理器、环境等信息。此外,每个Mapper接口或XML映射文件也需要相应的配置,用来指定SQL语句和结果映射。 2. **SQL映射文件*...

    iBATIS2.3.4 jar包及源码

    2. DAO(Data Access Object):是iBATIS中的一个设计模式,用于封装数据库操作。DAO接口定义了操作数据库的方法,而具体的实现则由iBATIS处理。 3. 映射器接口:开发者定义的接口,其方法对应SQL映射文件中的SQL...

    ibatis_with_memcached

    在IT行业中,数据库缓存是提高应用程序性能的关键技术之一,特别是在处理大量数据和频繁查询时。Ibatis,一个轻量级的...开发者可以通过该项目学习到缓存系统的原理以及在Ibatis中的实际应用,进一步提升自己的技能。

Global site tag (gtag.js) - Google Analytics