继承了HibernateDaoSupport
现在要删除id是1、2、3.......等一大堆数据,怎么操作效率高

解决方案 »

  1.   

    什么数据库?
    我只知道sql中有truncate,这个与delete相比是不记录日志文件的,速度比delete快.
      

  2.   

     public int deleteBrands(Long[] delBrandId){
            Session session = getSession();
             Transaction tx = session.beginTransaction();
            StringBuffer sql = new StringBuffer();
            sql.append("delete Brand  where brandId  in ( :brandId) ");
            Query query = session.createQuery(sql.toString());
            query.setParameterList("brandId",delBrandId);
            int dels = query.executeUpdate();
            tx.commit();
            return dels;
        }
      

  3.   

    最快的通过session获得connection直接去操纵更快。。个人觉得。。
      

  4.   

    不太赞成,用jdbc比hibernate session更快吧?
      

  5.   

    大量批量的删除 使用hibernate的效率很难跟jdbc相媲美的。记不太清楚了:好像网上有文章说
    hibernate  不知道 2.x  时候好像 最底层的 执行好像 还要 把所有实体类都要先查询一次的。3.x的时候好像已经改进了 ,这个没有研究。
      

  6.   

    1.hibernate推荐人们使用面向对象的方式来操作数据库,虽然可以得到Connection接口的实例来直接操作sql,但这不是他推荐的方法。
    2.直接操作sql可能会出乱子,使用Connection直接删除数据时是不会通知session的,因此有可能使同时存在的其他正常操作发生难以预料的错误。
    通常的错误是数据库中不存在,但session二级缓存中却存在,或是删除了不可缺的关联后,造成关键查询出错等等。
      

  7.   

    createSQLQuery 可以用来更新的 明白我的意思么?