hibernate的并发问题

问题描述

代码如下:------------------------------------------------------------------ListtempList=smgTCenterInfoDAO.findByProperty("centerCode",centerCode);------------------------------------------------------------------调用find方法执行一个查询,报错如下:------------------------------------------------------------------2011-05-3008:46:30[ERROR][SmgTCenterInfoDAO:98]findbypropertynamefailedjava.util.ConcurrentModificationException:concurrentaccesstoHashMapattemptedbyThread[pool-1-thread-4,5,main]atjava.util.HashMap.onEntry(HashMap.java:214)atjava.util.HashMap.transfer(HashMap.java:686)atjava.util.HashMap.resize(HashMap.java:676)atjava.util.HashMap.addEntry(HashMap.java:1049)atjava.util.HashMap.put(HashMap.java:561)atorg.apache.commons.collections.SequencedHashMap.put(SequencedHashMap.java:447)atorg.apache.commons.collections.LRUMap.put(LRUMap.java:126)atorg.hibernate.util.SoftLimitMRUCache.get(SoftLimitMRUCache.java:53)atorg.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:65)atorg.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:134)atorg.hibernate.impl.SessionImpl.list(SessionImpl.java:1122)atorg.hibernate.impl.QueryImpl.list(QueryImpl.java:79)atorg.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:856)atorg.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)atorg.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:847)atorg.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:843)atcom.ccb.cost.biz.persistence.dao.SmgTCenterInfoDAO.findByProperty(SmgTCenterInfoDAO.java:96)atcom.ccb.cost.biz.bizcommon.account.util.AcctCommonUtil.getCurrCenterDate(AcctCommonUtil.java:1428)atcom.ccb.cost.biz.bizcommon.account.util.AcctWaitUtil.canAcctSend(AcctWaitUtil.java:152)atcom.ccb.cost.biz.bizcommon.account.service.impl.AccountBaseServiceImpl.currExecute(AccountBaseServiceImpl.java:151)atcom.ccb.cost.biz.bizcommon.account.service.impl.AccountBaseServiceImpl.execute(AccountBaseServiceImpl.java:74)atsun.reflect.GeneratedMethodAccessor102.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atorg.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)atorg.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)at$Proxy51.execute(UnknownSource)atcom.ccb.cost.biz.bizcommon.account.facade.impl.AccountAutofacadeImpl.execute(AccountAutofacadeImpl.java:79)atcom.ccb.cost.biz.robot.account.AccountAutoBatchThread.run(AccountAutoBatchThread.java:83)atjava.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:678)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:703)atjava.lang.Thread.run(Thread.java:811)------------------------------------------------------------------望高手指教一二。。。谢谢。。。。。。

时间: 2024-10-03 08:55:03

hibernate的并发问题的相关文章

【HIBERNATE框架开发之九】HIBERNATE 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/825.html 1.   循环分页或者循环进行部分读取处理数据的时候,使用 session.clear() ;   2.    对应1+N(N+1)问题使用如下解决方式: 1): 使用createCriteria进行查询(join fetch) 2):HQL -> join fetch 3): 使用@fetch设置LAZ

全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制_java

本文所需的数据库初始文件,Hibernate常用操作的完整示例代码(包含所有Hibernate操作所需jar文件)提供下载学习:http://download.csdn.net/detail/daijin888888/9551724 1.Hibernate关联映射     1)什么是关联映射?         如果表之间具有关联关系,Hibernate允许我们在hbm.xml中描述他们的关联关系,然后在我们操作其中一张表时,自动的根据这种关系操作到另外的关系表,那么这种关联关系的设置,我们称之为

Hibernate的事务和并发(一)

Hibernate的事务和并发控制很容易掌握.Hibernate直接使用JDBC连接和JTA资源,不添加任何附加锁定 行为.我们强烈推荐你花点时间了解JDBC编程,ANSI SQL查询语言和你使用 的数据库系统的事务隔离规范.Hibernate只添加自动版本管理,而不会锁 定内存中的对象,也不会改变数据库事务的隔离级别.基本上,使用 Hibernate就好像直接使用JDBC(或者JTA/CMT)来访问你的数据库资源. 除了自动版本管理,针对行级悲观锁定,Hibernate也提供了辅助的API,它

Hibernate的事务和并发(二)

12.2.1.非托管环境 如果Hibernat持久层运行在一个非托管环境中,数据库连接通常由Hibernate的连接池机制 来处理. 代码内容 session/transaction处理方式如下所示: //Non-managed environment idiom Session sess = factory.openSession(); Transaction tx = null; try { tx = sess.beginTransaction(); // do some work ...

hibernate并发的问题

问题描述 在service中我写了一个修改方法,有一个表的字段存储的是图片的路径,在用户上传图片的时候通过追加的方法修改这个字段,比如本来是a.jpg,后来又上传一张b.jpg,就改成a.jpg,b,jpg现在如果出现并发的时候,查出来的比如都是a.jpg,一个改成a.jpg,b.jpg另一个改成a.jpg,c,jpg,就出现数据丢失了,本意是改成a.jpg,b.jpg,c.jpg了解到spring的service默认单例,我就在对应的方法上加了synchronized,但是数据读出来的还都是初

Hibernate主键生成方式 Key Generator

Hibernate主键生成方式 Key Generator 主键产生器 可选项说明: 1) assigned 主键由外部程序负责生成,无需Hibernate参与. 2) hilo 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态. 3) seqhilo 与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle. 4) increment 主键按数值顺序递增.此方式的实现机制

在Java SE中使用Hibernate框架

目前人们很容易发现Hibernate正迅速的成为流行的J2EE的O/R映射工具和数据集成框架(如果不是最流行的).Hibernate为企业应用开发者操作关系数据库的提供了清晰明了而又强大的工具.然而如果你需要在外部访问那些包装在J2EE web应用里的实体,情况又怎样呢?你的开发跟应用独立分开,却又相同的实体以访问你的数据吗?又或者你得编写附加的web组件来管理对数据的内部访问吗? 在很多情况下,这些问题都会出现.我的情况是我的公司需要将来自多个供应商,有着多种文件格式的记录导入到数据库里.我想

Hibernate的缓存机制介绍

缓存 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 缓存的介质一般是内存,所以读写速度很快.但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质.缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期. Hibernate的缓存包括Session的缓存和SessionFactor

JDBC+Hibernate将Blob数据写入Oracle

oracle|数据 Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出