jdbc如何实现事务处理?(例如先进行读取在进行修改能在一个事务里)

解决方案 »

  1.   

    使用Spring框架吧,Spring框架支持事物处理的。
      

  2.   

    数据在进行读取(查询)的时候可以不用事务,但如果你不想读取脏数据时,可以加锁(对于Hibernate的方法是用lock,这个方式你可以查一下,因为jdbc是Hibernate的根本),而对于update或是save,delete的时候是需要用到事务的.JDBC默认事务处理是false,那么在用的时候,可以根据你的要求或是进行commit(),或是不用.
      

  3.   

    只要你不commit就是在一个事务里,一旦用了commit,该事务就结束
      

  4.   

    我想只用 jdbc实现 多表之前操作的 事务处理   有没有办法?
      

  5.   


    楼主不过是事务而已,有必要Spring、Hibernate都一定要上吗?
    conn.setAutoCommit(false);...
    conn.commit();//或者conn.rollback();
    conn.setAutoCommit(true);你可以select for update来保证数据更新
      

  6.   

    我第一人选择相同条件的 的两行    我用 rownum <=2去取    第二个人再去取两个或者更多怎么办?  我如果rownum <=2第一个人查看的因为锁了肯定看不到 我希望他能跳过 这两句再去读 2条或者更多因为每次数量是不固定的所以  想问问有啥办法?
      

  7.   

    当然有办法了,Spring 中的事务控制也是 Java 开发的。如果使用 JDBC 控制事物的话,首先要确定事务的边界是在 DAO 层还是在业务层。如果事务边界在 DAO 层的话,那很好处理,直接使用 Connection 的事务处理方法。如果事务边界在业务层,那就比较麻烦,因为一个业务方法会调用一个或多个 DAO 中的方法完成一个事务,
    我们必须把这几个 DAO 方法纳入一个事务之中,这在 J2EE 设计中称为事务上下文模式。事务上下文模式一般采用 ThreadLocal 将数据库连接对象绑定在当前的请求线程中,DAO 中的连接对象
    从 ThreadLocal 中获得,DAO 中不能执行 con.close 方法。另外业务方法采用动态代理将其改写,把
    Connection 对象的事务处理切入到方法中,也就是在方法执行前开启事务,执行完后提交事务,如果其
    中产生异常则回滚事务。
      

  8.   

    如果设计优良的话完全能够做到像 Spring、EJB 中的事务处理不侵入到业务逻辑处理当中去。
      

  9.   

    情问你有没有这方面的详细材料或者demo?
      

  10.   

    已经给你讲了具体的原理和步骤了,我认为这些比代码更重要。参考这本书:
    http://www.oreilly.com.cn/book.php?bn=7-5083-3099-4