知识大全 Hibernate大数据量操作方案

Posted 操作

篇首语:志行万里者,不中道而辍足。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate大数据量操作方案相关的知识,希望对你有一定的参考价值。

Hibernate大数据量操作方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  阅读了Hibernate的Reference之后 可以采用批量处理的方法 当插入的数据超过 时 就flush session并且clear

  下面是一个测试method

     /** */ /**

      * 测试成批插入数据的事务处理 返回是否成功

      *

      * @param objPO Object

      * @return boolean

       */

       public  boolean insertBatch( final Object objPO) 

        boolean isSuccess =  false ;

        Transaction transaction =  null ;

        Session session = openSession();

         try  

          transaction = session beginTransaction();

           for ( int i =  ; i <  ; i ++ ) 

            session save(objPO);

             if (i %    ==  ) 

              // flush a batch of inserts and release memory

              session flush();

              session clear();

           

         

          mit();

          ( transaction wasCommitted:

              + transaction wasCommitted());

          isSuccess =  true ;

          catch (HibernateException ex) 

           if (transaction !=  null ) 

             try  

              transaction rollback();

              logger error( transaction wasRolledBack:

                  + transaction wasRolledBack());

              catch (HibernateException ex ) 

              logger error(ex getMessage());

              ex printStackTrace();

           

         

          logger error( Insert Batch PO Error:   + ex getMessage());

          ex printStackTrace();

          finally  

           if (transaction !=  null ) 

            transaction =  null ;

         

          session close();

       

        return isSuccess;

     

  

  这只是简单的测试 实际项目中遇到的问题 要比这个复杂得多

  这时候 我们可以让Spring来控制Transaction 自己来控制Hibernate的Session 随时更新数据

  首先 利用HibernateDaoSupport类来自定义个方法打开Session

   public Session openSession()

  

       return getHibernateTemplate() getSessionFactory() openSession();

  

     然后 用打开的Session处理你的数据

   protected void doBusiness(Session session)

  

       while (true)

         //do your business with the opening session

         someMethod(session);

         session flush();

         session clear();

         ( good job! );

       

  

  每做一次数据操作 就更新一次Session 这样可以保证每次数据操作都成功 否则就让Spring去控制 它roll back吧

  最后 记得关闭Session

    Session session = openSession();

   doBusiness(session);

   session close(); // 关闭session

  至于处理速度呢 不会慢到哪儿去的 已经试验过了 ; )

cha138/Article/program/Java/ky/201311/28270

相关参考

知识大全 hibernate大数据性能处理

   在项目中使用Hibernate进行大数据量的性能测试有一些总结   )在处理大数据量时会有大量的数据缓冲保存在Session的一级缓存

知识大全 Hibernate下数据批量处理解决方案

Hibernate下数据批量处理解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多人都

知识大全 Hibernate编写通用数据库操作代码

Hibernate编写通用数据库操作代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!insert

知识大全 Hibernate如何配置操作多个数据库

Hibernate如何配置操作多个数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Hibernate中的数据库增改删查操作

Hibernate中的数据库增改删查操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Hibernate自动根据映射创建数据库表

Hibernate自动根据映射创建数据库表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方案一

知识大全 hibernate的优化-事务处理

  事务概述  事务就是指作为单个逻辑工作单元执行的一组数据操作这些操作要么必须全部成功要么必须全部失败以保证数据的一致性和完整性事务具有ACID属性  原子性自然界最小的事务的内容要么都做要么都不做

知识大全 用hibernate查询一段时间的记录

  这是在一个群里讨论的问题  方法很多如果说数据库中数据的存储是用date类型的话改怎么做如果说做数据迁移的话又该怎么做?  最终的讨论方案在用字符串存储格式上比较好毕竟各个数据库对时间的存储存在差

知识大全 如何通过hibernate调用存储过程

用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据

知识大全 MySQL数据库性能优化的实际操作方案

MySQL数据库性能优化的实际操作方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下的文章