知识大全 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进行大数据量的性能测试有一些总结 )在处理大数据量时会有大量的数据缓冲保存在Session的一级缓存
Hibernate下数据批量处理解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多人都
Hibernate编写通用数据库操作代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!insert
Hibernate如何配置操作多个数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Hibernate中的数据库增改删查操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Hibernate自动根据映射创建数据库表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 方案一
事务概述 事务就是指作为单个逻辑工作单元执行的一组数据操作这些操作要么必须全部成功要么必须全部失败以保证数据的一致性和完整性事务具有ACID属性 原子性自然界最小的事务的内容要么都做要么都不做
这是在一个群里讨论的问题 方法很多如果说数据库中数据的存储是用date类型的话改怎么做如果说做数据迁移的话又该怎么做? 最终的讨论方案在用字符串存储格式上比较好毕竟各个数据库对时间的存储存在差
用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据
MySQL数据库性能优化的实际操作方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下的文章