用struts+hibernate+spring框架组合做了“网上订餐”项目。服务器用的是tomcat6.0.18
数据库是 mssql2000
问题描述:比如点击“订餐”按钮,点击后,程序会从数据库取餐馆信息并展示。
项目启动后,第一次点击,程序正常;第二次点击也正常;但是继续点击,浏览器就一直等待数据了,
调式程序发现,执行到读取数据库信息的代码时,程序就不运行,一直等待数据。
读取数据库的代码如下:public Shops selectShop(long shopId) {
return (Shops) this.getHibernateTemplate().load(Shops.class, shopId);
}
执行到这句就不能继续运行了。
我怀疑是数据库连接问题,但是 第一次、第二次执行此语句时却没有问题。
小弟实在不解,请大家帮帮忙啊跪求答案,谢谢
在线等待!
数据库是 mssql2000
问题描述:比如点击“订餐”按钮,点击后,程序会从数据库取餐馆信息并展示。
项目启动后,第一次点击,程序正常;第二次点击也正常;但是继续点击,浏览器就一直等待数据了,
调式程序发现,执行到读取数据库信息的代码时,程序就不运行,一直等待数据。
读取数据库的代码如下:public Shops selectShop(long shopId) {
return (Shops) this.getHibernateTemplate().load(Shops.class, shopId);
}
执行到这句就不能继续运行了。
我怀疑是数据库连接问题,但是 第一次、第二次执行此语句时却没有问题。
小弟实在不解,请大家帮帮忙啊跪求答案,谢谢
在线等待!
<!-- 加载配置文件 -->
<bean id="propertyConfiguer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:hibernate.properties</value>
</list>
</property>
</bean>
<!-- 配置数据源DataSource -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${db.driver}"></property>
<property name="url" value="${db.url}"></property>
<property name="username" value="${db.username}"></property>
<property name="password" value="${db.password}"></property>
</bean>
<!--配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.transaction">
${hibernate.transaction}
</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.hbm2ddl.auto">
${hibernate.hbm2ddl.auto}
</prop>
</props>
</property>
<!-- 配置映射文件 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/hh/orders/po/</value>
</list>
</property>
</bean>
数据库连接池为什么没有没配好呢?上面的配置还缺少什么吗?
没关闭session:什么时候关闭session呢?我只是重复 查询 就出问题了啊,查询的结果是放在session里,什么时候清除较好呢?
hibernate中的session创建的太多:这个我不明白,怎样限制个数呢?或者自动清除哦?
请赐教,谢谢
你上网查一下链接配置,你的配置里没有连接池的配置,如果你想不配链接池,用完之后要关闭连接。
建议使用spring管理session,即配链接池,在配置链接池的情况下 spring管理连接即session,所以不需要你去管理
public List<Item> selectItem(Map<Object, Object> params) {
Criteria criteria = this.getSession().createCriteria(Item.class);
criteria.add(Restrictions.allEq(params));
return criteria.list();
}
这样做,session如何关闭呢?
BaseDao extends HibernateDaoSupport
然后 Session session=super.getSession();
代码修改了,这样做:public List<Item> selectItem(final Map<Object, Object> params) {
return (List<Item>)this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(Item.class);
criteria.add(Restrictions.allEq(params));
return criteria.list();
}
});
}
谢谢大家的参与!