做项目是否都有必要设置conn.setAutoCommit(false)?
为什么?主要是为什么!

解决方案 »

  1.   

    我认为有必要,conn.setAutoCommit()的功能是每执行一条SQL语句,就作为一次事务提交。但一般在项目中很有可能需要执行多条SQL语句作为一个事务。若有一个执行不成功,就会rollback();
      

  2.   

    但是多条SQL的操作事务相对于单条SQL的操作 好象少的可怜
      

  3.   

    大家都会在getConnection()函数里写上conn.setAutoCommit(false)吗??
    这很容易回答吧!
      

  4.   

    我是喜欢conn.setAutoCommit(false);在配置里设置
    提交不成功就roolback() 
    对于一次处理多条语句时必须的;如果在后台代码中可根据情况选择了
      

  5.   

    不写会默认true了;自己选择拉
      

  6.   

    不写就会默认自动提交,所以还是应该写成setAutoCommit(false) ,这样在执行SQL语句不成功是就可以用rollback(),这样可以确保程序顺利运行
      

  7.   

    楼上说单句SQL也需要setAutoCommit(false),大家认为呢?
      

  8.   

    一般来讲,大家对数据库中的表单,主要是增、删、改、查 这四个操作,如果你的程序当中,遇到一次业务逻辑需要两次或两次以上的对相同数据表的增删改操作,那么,为了数据的一致性,(或者具体说,在你的一次业务逻辑的处理过程中,其他(线程或程序或业务处理)的对相同数据的相同两次查询所得结果相同。)我们会利用数据库的事务操作,将一次业务逻辑所包含的所有操作封装在一个事务里,一次将多个操作进行提交。
    而conn的setAutoCommit方法,是指,在事务当中,是否执行一条语句就自动提交一次。
    这样的话,如果,你想在一个事务里进行多个操作。就必然将setAutoCommit的参数设置成false,在多个操作的最后调用conn.commit()方法,进行手动提交。
      

  9.   

    学习学习,正好一个项目用到conn,了解一下。。
      

  10.   

    有时候是很必要的,特别是纯JDBC的事务控制,就更需要了,举个例子来说吧,你要删除某个部门,而该部门下又有多个员工,这时候,你就得先删除该部门下的所有员工,这里,你就得把两个操作(删除员工和删除部门)放在同一个业务中了,而这种情况下是很危险的,你可能成功删除了该部门下的所有员工而删除该部门的时候又遇到了异常即没有成功删除。这时候,如果你原先没有把事务提交方式改为手工提交,而之前删除的员工的事务又已经自动提交了,就无法进行数据回滚,员工的数据就找不回了,这时,你会45度仰望天空,感叹一声:“啊,悲剧终于发生了”