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

bbl198486 2009-03-23 05:38:09
jdbc如何实现事务处理?(例如先进行读取在进行修改能在一个事务里)
...全文
967 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
已经给你讲了具体的原理和步骤了,我认为这些比代码更重要。

参考这本书:


http://www.oreilly.com.cn/book.php?bn=7-5083-3099-4
  • 打赏
  • 举报
回复
当然有办法了,Spring 中的事务控制也是 Java 开发的。

如果使用 JDBC 控制事物的话,首先要确定事务的边界是在 DAO 层还是在业务层。

如果事务边界在 DAO 层的话,那很好处理,直接使用 Connection 的事务处理方法。

如果事务边界在业务层,那就比较麻烦,因为一个业务方法会调用一个或多个 DAO 中的方法完成一个事务,
我们必须把这几个 DAO 方法纳入一个事务之中,这在 J2EE 设计中称为事务上下文模式。

事务上下文模式一般采用 ThreadLocal 将数据库连接对象绑定在当前的请求线程中,DAO 中的连接对象
从 ThreadLocal 中获得,DAO 中不能执行 con.close 方法。另外业务方法采用动态代理将其改写,把
Connection 对象的事务处理切入到方法中,也就是在方法执行前开启事务,执行完后提交事务,如果其
中产生异常则回滚事务。
bbl198486 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bao110908 的回复:]
当然有办法了,Spring 中的事务控制也是 Java 开发的。

如果使用 JDBC 控制事物的话,首先要确定事务的边界是在 DAO 层还是在业务层。

如果事务边界在 DAO 层的话,那很好处理,直接使用 Connection 的事务处理方法。

如果事务边界在业务层,那就比较麻烦,因为一个业务方法会调用一个或多个 DAO 中的方法完成一个事务,
我们必须把这几个 DAO 方法纳入一个事务之中,这在 J2EE 设计中称为事务上下文模式。

事…
[/Quote]
情问你有没有这方面的详细材料或者demo?
cnidb 2009-03-31
  • 打赏
  • 举报
回复
支持12楼
  • 打赏
  • 举报
回复
如果设计优良的话完全能够做到像 Spring、EJB 中的事务处理不侵入到业务逻辑处理当中去。
bbl198486 2009-03-30
  • 打赏
  • 举报
回复
我第一人选择相同条件的 的两行 我用 rownum <=2去取 第二个人再去取两个或者更多怎么办? 我如果rownum <=2第一个人查看的因为锁了肯定看不到 我希望他能跳过 这两句再去读 2条或者更多因为每次数量是不固定的所以 想问问有啥办法?
酒浪子 2009-03-30
  • 打赏
  • 举报
回复
学习!
xingbozy 2009-03-30
  • 打赏
  • 举报
回复
建表时行加锁
emon123 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ChDw 的回复:]
引用 5 楼 bbl198486 的回复:
我想只用 jdbc实现 多表之前操作的 事务处理 有没有办法?


楼主不过是事务而已,有必要Spring、Hibernate都一定要上吗?


conn.setAutoCommit(false);

...
conn.commit();//或者conn.rollback();
conn.setAutoCommit(true);

你可以select for update来保证数据更新
[/Quote]

正解!~~~
ChDw 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bbl198486 的回复:]
我想只用 jdbc实现 多表之前操作的 事务处理 有没有办法?
[/Quote]

楼主不过是事务而已,有必要Spring、Hibernate都一定要上吗?


conn.setAutoCommit(false);

...
conn.commit();//或者conn.rollback();
conn.setAutoCommit(true);

你可以select for update来保证数据更新
bbl198486 2009-03-27
  • 打赏
  • 举报
回复
就是保证 先去查询一些数据 然后对这些数据修改 这个之间保证 在一个事务中 不会让别人 查看到 脏数据
bbl198486 2009-03-26
  • 打赏
  • 举报
回复
我想只用 jdbc实现 多表之前操作的 事务处理 有没有办法?
ldxfsh 2009-03-24
  • 打赏
  • 举报
回复
只要你不commit就是在一个事务里,一旦用了commit,该事务就结束
xingbozy 2009-03-24
  • 打赏
  • 举报
回复
数据在进行读取(查询)的时候可以不用事务,但如果你不想读取脏数据时,可以加锁(对于Hibernate的方法是用lock,这个方式你可以查一下,因为jdbc是Hibernate的根本),而对于update或是save,delete的时候是需要用到事务的.JDBC默认事务处理是false,那么在用的时候,可以根据你的要求或是进行commit(),或是不用.
bbl198486 2009-03-24
  • 打赏
  • 举报
回复
要是不用 真的没办法了吗?
NonActive 2009-03-23
  • 打赏
  • 举报
回复
使用Spring框架吧,Spring框架支持事物处理的。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧