Spring hibernate模板上的flush和clear方法是否锁定数据库表

Spring hibernate模板上的flush和clear方法是否锁定数据库表,spring,hibernate,transactions,Spring,Hibernate,Transactions,在我的应用程序中,我使用Spring4.0声明性事务管理和dao层中的hibernate…我使用hibernate模板进行插入和更新。。因为我必须插入大量记录,所以我会在hibernate模板上调用flush和clear方法..每插入50条记录..但我观察到的是,它在处理时会锁定特定的表。。只有在所有记录都插入数据库后,我才能对数据库进行查询。。。 这种行为正确吗???它是否有合适的解决方案请尝试将以下数据源属性添加到数据源配置中 <property name="maxActive" va

在我的应用程序中,我使用Spring4.0声明性事务管理和dao层中的hibernate…我使用hibernate模板进行插入和更新。。因为我必须插入大量记录,所以我会在hibernate模板上调用flush和clear方法..每插入50条记录..但我观察到的是,它在处理时会锁定特定的表。。只有在所有记录都插入数据库后,我才能对数据库进行查询。。。
这种行为正确吗???它是否有合适的解决方案

请尝试将以下数据源属性添加到数据源配置中

<property name="maxActive" value="100"></property> 
<property name="maxIdle" value="30"></property> 
<property name="maxWait" value="10000"></property> 

也检查一下。
希望这有帮助。

您是否更改了默认刷新模式?试着这样做:Session Session=sessionFactory.openSession();session.setFlushMode(FlushMode.AUTO);我没有更改默认值,其次我没有使用会话工厂。我直接使用hibernate模板,并调用flush和clear,我使用hibernate 4。。我不认为上面的属性会有帮助。我的问题是。在上面的情况下,这个hibernate特性是用来锁定数据库的吗?你是尝试添加它还是只是假设?这里还有一个参考,您可以如何添加这些属性。我使用websphere作为应用程序服务器,并在服务器级别配置数据源,在服务器级别可以很好地管理连接。您想让我在服务器级别更改ds配置吗?我认为值得一试。我不知道websphere,但在tomcat中,我们可以在server.xml中添加这些属性。