关于连接被关闭HibernateDaoSupport

yuyistar 2010-05-07 11:48:55
public class CpfyDAOHibImpl extends HibernateDaoSupport implements CpfyDAO{

public List search(int pageNo,int pageSize){
Session session=super.getSession();
String hql="from Roster roster order by roster.rosterId asc";
Query query=session.createQuery(hql);
int firstResultIndex=pageSize*(pageNo-1);
query.setFirstResult(firstResultIndex);
query.setMaxResults(pageSize);
List list=query.list();
return list;
}
}
这是我的分页查询用的是HibernateDaoSupport。。但是多点几次下一页读取数据就会停止在那里。。而已会出现连接被关闭。
...全文
147 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
dameimm 2010-05-07
  • 打赏
  • 举报
回复
数据库的数据被你读到头了吧。判断一下是不少到了最后一页。到了最后一页就没有下一页了。
闭目鱼 2010-05-07
  • 打赏
  • 举报
回复
你有没有用连接池?
archko 2010-05-07
  • 打赏
  • 举报
回复
Session session=super.getSession();这个有问题,
没有处理Close,如果是模板化处理 ,它会关闭的,如果是回调方法(里面也是调用模板),也会关闭,其它你自己取得了Session而不关闭,当然会有问题了.
闭目鱼 2010-05-07
  • 打赏
  • 举报
回复
你的session怎么初始化的?
如果是Session session=HibernateSessionFactory.getSession();
就会有这种情况
换成
Session session=this.getSession();
圣德痞人 2010-05-07
  • 打赏
  • 举报
回复
学习中...
学习ing 2010-05-07
  • 打赏
  • 举报
回复
既然继承了HibernateDaoSupport为什么不用?
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory"><ref local="sessionFactory"/></property>

</bean>
然后在配置Spring 事务管理器代理
<bean id="transactionProxyFactory" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<property name="transactionManager">

<ref local="transactionManager"/>

</property>

<property name="transactionAttributes">

<props>

<prop key="save*">PROPAGATION_REQUIRED</prop>

<prop key="insert*">PROPAGATION_REQUIRED</prop>

<prop key="del*">PROPAGATION_REQUIRED</prop>

<prop key="add*">PROPAGATION_REQUIRED</prop>

<prop key="update*">PROPAGATION_REQUIRED</prop>

<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="search*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="count*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

</props>

</property>

</bean>

<!-- Hibernate模板 -->

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory">

<ref local="sessionFactory" />

</property>

</bean>
cjoy4856 2010-05-07
  • 打赏
  • 举报
回复
建议你从你的session开始去找问题 以前我也碰到这个问题
SLL324 2010-05-07
  • 打赏
  • 举报
回复
每日回复JF
mr_huolong 2010-05-07
  • 打赏
  • 举报
回复
观望 ,等待
panhaichun 2010-05-07
  • 打赏
  • 举报
回复
你那样要调用releaseSession 关闭session。


怎么不用 hibernateTemplate??

dameimm 2010-05-07
  • 打赏
  • 举报
回复
In general, it is recommended to use HibernateTemplate, either with the provided convenience operations or with a custom HibernateCallback that provides you with a Session to work on. HibernateTemplate will care for all resource management and for proper exception conversion

getSession()就需要自己控制。
长公子冰 2010-05-07
  • 打赏
  • 举报
回复
web.xml里配置一下OpenSessionInView过滤器

<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
yichao_leo 2010-05-07
  • 打赏
  • 举报
回复
上面那种算是一种解决办法..你可以把那个分页也那样写
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=cpfy;SelectMethod=cursor"></property>
<property name="username" value="sa"></property>
<property name="password" value="y2121"></property>
</bean>

<!-- SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>com/cpfy/rsk/entity/EmpType.hbm.xml</value>
<value>com/cpfy/rsk/entity/Family.hbm.xml</value>
<value>com/cpfy/rsk/entity/Hospitalized.hbm.xml</value>
<value>com/cpfy/rsk/entity/Nation.hbm.xml</value>
<value>com/cpfy/rsk/entity/Office.hbm.xml</value>
<value>com/cpfy/rsk/entity/PoliticalAppearance.hbm.xml</value>
<value>com/cpfy/rsk/entity/Post.hbm.xml</value>
<value>com/cpfy/rsk/entity/Qualification.hbm.xml</value>
<value>com/cpfy/rsk/entity/Resume.hbm.xml</value>
<value>com/cpfy/rsk/entity/Roster.hbm.xml</value>
<value>com/cpfy/rsk/entity/Section.hbm.xml</value>
<value>com/cpfy/rsk/entity/SectionCpost.hbm.xml</value>
<value>com/cpfy/rsk/entity/Sex.hbm.xml</value>
<value>com/cpfy/rsk/entity/Specialty.hbm.xml</value>
<value>com/cpfy/rsk/entity/Status.hbm.xml</value>
<value>com/cpfy/rsk/entity/Test.hbm.xml</value>
<value>com/cpfy/rsk/entity/Xtest.hbm.xml</value>
<value>com/cpfy/rsk/entity/Ftest.hbm.xml</value>
<value>com/cpfy/rsk/entity/UserInfo.hbm.xml</value>
<value>com/cpfy/rsk/entity/UserPopedom.hbm.xml</value>
<value>com/cpfy/rsk/entity/UserState.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<!-- DAO -->
<bean id="cpfyDAO" class="com.cpfy.rsk.dao.hibimpl.CpfyDAOHibImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- Biz -->
<bean id="cpfyBiz" class="com.cpfy.rsk.biz.impl.CpfyBizImpl">
<property name="cpfyDAO" ref="cpfyDAO"></property>
</bean>

<!-- Action -->
<bean name="/cpfy" class="com.cpfy.rsk.web.action.CpfyAction">
<property name="cpfyBiz" ref="cpfyBiz"></property>
</bean>
</beans>
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
没有配置spring事物。。有关系吗。上面的那个方法没有配事物。但是没有问题。
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
应该怎么配置呢HibernateDaoSupport 的session是不是自动管理的吗。。我用同一个类下的另一个方法就没有问题。。应该是session的问题
public List search(final Test test) {
return super.getHibernateTemplate().executeFind(
new HibernateCallback(){
public Object doInHibernate(Session s)throws HibernateException{
Criteria c=s.createCriteria(Test.class);
if(null!=test){
if(null!=test.getName()&&!test.getName().equals("")){
c.add(Restrictions.like("name", test.getName(),MatchMode.ANYWHERE));
}
}
c.addOrder(Order.asc("id"));
return c.list();
}
});
}
这个重复执行没有问题
yichao_leo 2010-05-07
  • 打赏
  • 举报
回复
Spring的事物配置了没?没的话可能是因为每次查询时打开的session没有关闭...
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
严重: Servlet.service() for servlet action threw exception
com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.getAutoCommit(Unknown Source)
at org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:241)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getAutoCommit(PoolingDataSource.java:221)
at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:128)
at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:328)
at org.hibernate.impl.SessionImpl.afterOperation(SessionImpl.java:398)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1330)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:300)
at com.cpfy.rsk.dao.hibimpl.CpfyDAOHibImpl$1.doInHibernate(CpfyDAOHibImpl.java:57)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:336)
at com.cpfy.rsk.dao.hibimpl.CpfyDAOHibImpl.search(CpfyDAOHibImpl.java:47)
at com.cpfy.rsk.biz.impl.CpfyBizImpl.search(CpfyBizImpl.java:25)
at com.cpfy.rsk.web.action.CpfyAction.toSearch(CpfyAction.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
而且出现这样的情况后。。必须重启tomcat
yuyistar 2010-05-07
  • 打赏
  • 举报
回复
ssh框架呀。。。HibernateDaoSupport继承的呀。。这个和最后一页没有关系。。不是那个问题。。网页就像载入的很慢一样。。蓝条慢慢的走

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧