日期:2014-05-17  浏览次数:20785 次

java web程序,事务处理
新手第一次跟项目,遇到一个动作需要同时操作2个表,插入表1个更新表2,这个应该要做进事务里吧?我想问在程序里面怎么实现这2个表的事务?
谢谢大家!

------解决方案--------------------
如果用了SHH框架,只需要在spring的配置文件中配置一下就可以了.
------解决方案--------------------
如果使用了spring框架,配置下就可以了。
使用jdbc操作数据库,关闭jdbc自动提交的功能,try catch捕获异常就回滚。
------解决方案--------------------
con.setAutoCommit(false);

try {

...
con.commit();

} catch (Exception e) {

con.rollback();

}


------解决方案--------------------
搂上两位给出的方案,是你的项目中必须搭建至少有Hibernate。
而如果没有此框架的话,那就自己主动控制
先把信息保存,然后执行更新Try{..}catch(...)..把每个方法抱起来,如果报错,
就把之前更新的在更新回去,后面类似
------解决方案--------------------
Java code

public void persist() {
        Connection conn = null;

        try {
            conn = ds.getConnection();
            conn.setAutoCommit(false);

                        //你需要的操作都放在这里


                        conn.commit();
        } catch (SQLException e) {
            logger.error(e.getMessage(), e);
            try {
                conn.rollback();
            } catch (SQLException ignore) {
            }
        } finally {
            conn.close()
        }

    }

------解决方案--------------------
探讨
Java code


public void persist() {
Connection conn = null;

try {
conn = ds.getConnection();
conn.setAutoCommit(false);

//你需……

------解决方案--------------------
是数据库的,就像你有sqlplus连数据库一样,你insert一条语句后只要不commit,那么其他用户是没法看到你insert的这条数据。
------解决方案--------------------
探讨

引用:
是数据库的,就像你有sqlplus连数据库一样,你insert一条语句后只要不commit,那么其他用户是没法看到你insert的这条数据。

哦意思是我需要在数据库里面写个事务,然后在程序里面调用他是吗?

------解决方案--------------------
你可以看看他们的工具是怎么写的,如果是你们公司自己封装的那么应该会有别的方法是可以控制事务的。
如果没有那么只能说他们封装的太垃圾。
------解决方案--------------------
Statement stmt;
con.setAutoCommit(false);

try {
...
stmt.execute(sql);
stmt.execute(sql2);
stmt.addBatch();

stmt.executeBatch();


con.commit();

} catch (Exception e) {

con.rollback();

}


------解决方案--------------------
探讨

你可以看看他们的工具是怎么写的,如果是你们公司自己封装的那么应该会有别的方法是可以控制事务的。
如果没有那么只能说他们封装的太垃圾。