日期:2014-05-20  浏览次数:20848 次

ssh开发的查询系统,查询7、8次就变慢,也没有出错信息,为什么?
最近用ssh框架(struts2+spring+hibernate)开发一个查询系统,一张表对应一个查询页面,一共大概10张表,10张表之间没联系,但10张表都通过外键与另一张主表相关联。 表里面也没什么数据
tomcat跑起来后,我查询7、8次后就慢了,并且一直停在那里,我设置断点后,发现它停在: Query query = createQuery(session, sql, null);那里,但没有错误信息输出,所在的方法是分页查询方法: 
/** 
 * 分页查询 
 * @param sql 查询的sql语句 
 * @param startRow 分页开始显示的纪录数 
 * @param pageSize 每页显示的数据条数 
 * @return 
 */ 
public List find(final String sql,final int startRow,final int pageSize) { 
log.debug("querying with no parameter"); 
try{ 
List result = this.getHibernateTemplate().executeFind(new HibernateCallback() { 
public Object doInHibernate(Session session) throws HibernateException, SQLException
  Query query = createQuery(session, sql, null); 
  query.setFirstResult(startRow); 
  query.setMaxResults(pageSize); 
  return query.list(); 

}); 
if (result == null || result.size()==0) { 
log.debug("query successful, no result found"); 
}  
else { 
log.debug("query successful, result size: " + result.size()); 

return result; 

catch(RuntimeException e){ 
log.error("query failed", e); 
throw e; 



ssh框架的数据库以及事务配置: 
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>  
  <property name="url" value="jdbc:oracle:thin:@210.1.4.38:1521:sscdev"/> 
  <property name="username" value="ssemem"/> 
  <property name="password" value="ssemem"/> 
  </bean> 
   
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
  <property name="dataSource" ref="dataSource" /> 
  </bean> 
   
  <bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/>  
 <bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler"> 
  <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> 
  </bean> 
   
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
  <property name="dataSource" ref="dataSource"/> 
  <property name="mappingResources"> 
  <list>  
<!-- 一些映射文件的配置--> 
  <value>com/mem/entity/MmYcMembers.hbm.xml</value> 
  <value>com/mem/entity/MmItMainOfferMachine.hbm.xml</value> 
  <value>com/mem/entity/MmItMainInfo.hbm.xml</value> 
  <value>com/mem/entity/MmItMainOfferDatabase.hbm.xml</value> 
  <value>com/mem/entity/MmItMainCounterSystem.hbm.xml</value> 
   
  </list> 
</property> 
  <property name="hibernateProperties"> 
  <value>  
  hibernate.show_sql=false