如题,我怎么判断对数据库做出的插入,更新,删除操作是否成功或者失败从而执行不同的操作呢

解决方案 »

  1.   

    首先排除出现异常的事情,比如HQL本身写错、数据库连接失败啥的,这类就不用讨论了。对于这几种语句,都是有返回值的,返回值代表影像记录条数。根据这个返回值来判断是否成功,甚至是部分成功。比如你心里预期是更新10条,结果返回值是5条,这就是部分成功,可能比比全部失败还更惨。
      

  2.   

    1楼正解,每个insert into, update, delete都会反回一个整数,这个整数就代表本次更新操作成功的个数,不过一般是这样认为的,如果多条记录hibernate会将所有操作执行成功才会commit而不是逐行提交.所以基本可以认为只要没有抛出SQLException本次操作就是成功,如果catch错误直接rollback不会有太多的影响
      

  3.   

    hibernate封装的事务处理,当插入,更新,删除操作无异常,则事务提交,否则回滚事务。
      

  4.   

    对于sql或编译异常可以上抛到应用层提示,至于操作一方面可以用事务控制,另外如select hibernate本身会有返回,update、delete、insert等可以自定义返回类型或结果就可以判断了。
      

  5.   

    这些执行语句执行成功后都会有返回值
    比如update一条信息 那么返回值就是1
    楼主可以根据这个1 提示用户更新成功
    若返回0 也就是更新失败
      

  6.   


    呵呵似乎只有你看到了我说的是整合ssh使用hibernateTemplate。
    自动回滚了!!那我程序要根据什么来做出提示插入失败、添加失败呢?!!
      

  7.   


    你一个条件式的批量Update,预期要Update10条,结果只Update了5条;Hibernate还能判断出不符合你预期而自动回滚?没听说过它有这功能。至于说执行上直接失败了,除了自动回滚外,本身就是有异常回来的,不明白为啥还判断不出来。
      

  8.   

    类似于这样的网站,在前台更新了数据,可是要根据返回值才能确定有没有更新成功从而给用户做出提示啊,jdbc确实可以得到返回值,但是hibernateTemplate封装过后的update返回空值,那这时候该怎么做可以达到我想要的效果呢?
      

  9.   

    还有个问题想问问大家,什么样的bean才适合交给spring管理呢??entity类交给它管也可以,但是这合适吗?我使用spring就应该把所有的类都交给它吗?
      

  10.   


    哦,HibernateTemplate的update()函数,只能针对单条数据做更新,所以不需要返回更新数量,更新失败直接就抛异常了;批量更新是另一个函数:bulkUpdate(),返回值:“the number of instances updated/deleted”。
    针对单笔更新的的update(),直接就是catch(DataAccessException)来处理即可,如果你需要分类给出不同的提示信息,就需要更详细的处理,按照子异常类型来处理,包括:
    CleanupFailureDataAccessException, ConcurrencyFailureException, DataAccessResourceFailureException, DataIntegrityViolationException, DataRetrievalFailureException, DataSourceLookupFailureException, InvalidDataAccessApiUsageException, InvalidDataAccessResourceUsageException, PermissionDeniedDataAccessException, UncategorizedDataAccessException
    品种比较齐全。
      

  11.   


    所有啊,Spring就是个容器,你既然选择了它,就应该尽量遵守,没必要还跨出容器范围做处理。
      

  12.   

    怎么不合适呀!反正都是实体bean