SSH2 问题,求SSH2高手帮解决

问题描述

struts2springframework3.1.0hibernate3在Dao里,调用this.getSession().createSQLQuery(sqlString);连接池不自动关闭,时间长了连接池就会满。而调用this.getSession().createQuery(sqlString);就不会出错,但是项目需要,有LEFTJOIN之类的SQL,不调用createSQLQuery不行。我尝试了在调用完后执行了this.getSession().close();this.getSession().clear();没有效果现在只能是靠设置Tomcat的连接池中的removeAbandonedTimeout=10来临时解决问题。但是只是治标不治本,当并发大的时候,还是会出错。求一完美解决方案。跪谢。

解决方案

本帖最后由 Drunkard_Faron 于 2014-11-13 15:23:18 编辑
解决方案二:
代码如下连接池会超时的代码:@SuppressWarnings("unchecked")@OverridepublicList<Object[]>getObjectList()throwsException{StringsqlString="";List<Object[]>list=null;try{sqlString+="SELECTa.id,"+"a.name,"+"a.card_type,"+"a.card_num,"+"a.sex,"+"a.birthday,"+"a.nation,"+"a.political,"+"a.center_id,"+"a.gradation_id,"+"a.specialty_id,"+"a.school_name,"+"a.phone,"+"a.qq,"+"a.province_id,"+"a.city_id,"+"a.district_id,"+"a.address,"+"a.update_datetime,"+"a.apply_user_id,"+"p1.namecard_type_name,"+"p2.namesex_name,"+"p3.namenation_name,"+"p4.namepolitical_name,"+"c.namecenter_name,"+"g.namegradation_name,"+"s.namespecialty_name,"+"pr.ProvinceName,"+"ci.CityName,"+"di.DistrictName";sqlString+="FROMapplya";sqlString+="LEFTJOINparameterp1ONp1.id=a.card_type";sqlString+="LEFTJOINparameterp2ONp2.id=a.sex";sqlString+="LEFTJOINparameterp3ONp3.id=a.nation";sqlString+="LEFTJOINparameterp4ONp4.id=a.political";sqlString+="LEFTJOINcentercONc.id=a.center_id";sqlString+="LEFTJOINgradationgONg.id=a.gradation_id";sqlString+="LEFTJOINspecialtysONs.id=a.specialty_id";sqlString+="LEFTJOINprovinceprONpr.ProvinceID=a.province_id";sqlString+="LEFTJOINcityciONci.CityID=a.city_id";sqlString+="LEFTJOINdistrictdiONdi.DistrictID=a.district_id";sqlString+="INNERJOIN("+"SELECTMAX(update_datetime)max_update_datetime,apply_user_id"+"FROMapplyGROUPBYapply_user_id"+")l_a";sqlString+="ONl_a.apply_user_id=a.apply_user_idANDl_a.max_update_datetime=a.update_datetime";sqlString+="ORDERBYa.apply_user_idDESC,a.update_datetimeDESC";list=this.getSession().createSQLQuery(sqlString).list();}catch(Exceptione){log.error(e);throwe;}returnlist;}

连接池不会超时的代码:@SuppressWarnings("unchecked")@OverridepublicList<Apply>getApplyListByApplyUserId(StringapplyUserId)throwsException{StringsqlString="FROMApplymWHEREm.applyUserId=?ORDERBYm.updateDatetimeDESC";List<Apply>list=newArrayList<Apply>();try{Queryquery=this.getSession().createQuery(sqlString);query.setString(0,applyUserId);list=query.list();}catch(Exceptione){log.error(e);throwe;}returnlist;}

解决方案三:
你是用Hibernate中用连接池的方式是吧、要是这样的、就应该在Tomcat中配置web.xml和context.xml连接池的、这个你配置好了吗?
解决方案四:
回复2楼,那个都配置了,跟Tomcat无关,是session没有关闭连接池。
解决方案五:
行了,自己解决了
解决方案六:
引用4楼Drunkard_Faron的回复:

行了,自己解决了

怎么解决的
解决方案七:
HQL好像也可以连接查询啊
解决方案八:
其实这种情况一般都用Profile工具跟踪一下就知道了;如果真的是连接未释放的问题,跟踪跟踪源代码就清楚了。
解决方案九:
首先,我认为createSQLQuery和createQuery的区别在于功能,和连接没有关系。前面可以跑sql,返回一个list,后者只能hql,返回对象list。其次,session是肯定可以释放的,一般大型项目都是通过配置最大最小连接和空闲连接时间来达到性能和连接数的平衡。

时间: 2024-10-01 03:22:01

SSH2 问题,求SSH2高手帮解决的相关文章

sql server-SQL Server提示错误,求高手帮解决

问题描述 SQL Server提示错误,求高手帮解决 select gl.ccus_id 客户编码, gl.cexch_name 币种, gl.cbegind_c 金额期初方向, (case when gl.cbegind_c = '借' then SUM(ISNULL(gl.mb, 0)) + SUM(ISNULL(ap.iAmount_f,0)) - SUM(ISNULL(dts.iQuantity * dts.iTaxUnitPrice, 0)) else sum(isnull(-gl.m

VS2012无法附加进程,求大神帮解决

问题描述 VS2012无法附加进程,求大神帮解决 解决方案 直接在vs里调试你的asp.net程序

字符串处理-求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例)

问题描述 求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例) Background Given an m by n grid of letters and a list of words, find the location in the grid at which the word can be found. A word matches a straight, uninterrupted line of letters in the grid.

android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下

问题描述 android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下 new Thread(new Runnable() { @Override public void run() { String szSrc = ""abcdefghijkl123456789123"" ; byte[] encoded = ThreeDes.encryptMode(keyBytes szSrc.getBytes()); try { /* Strin

我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙

问题描述 我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙 我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙 解决方案 纯html中无法使用.在动态项目中才能使用,如jsp,asp 你要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html 所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用..web.xml 中freemarker拦截器(制定拦截*.ht

android: 遇到了一个eclipse工程转到studio上的问题?求大神帮解决

问题描述 android: 遇到了一个eclipse工程转到studio上的问题?求大神帮解决 我在把项目由eclipse导到studio的时候遇到了一个问题,如下: Error:Execution failed for task ':app:transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessExce

java spring junit-java junit测试报错找不到自己定义的xml文件 跪求各位高手帮忙解决一下

问题描述 java junit测试报错找不到自己定义的xml文件 跪求各位高手帮忙解决一下 eclipse下junit测试时遇到如下错误,错误内容如下: at jp.co.dgic.eclipse.jdt.internal.junit.runner.DJUnitRunner.main(DJUnitRunner.java:49) caused by:org.springframework.beans.factory. BeanDefinitionStoreException:IoException

jdbc连接数据库-JDBC连接数据库,求大神帮解决啊,我怎么也解决不了了。。。

问题描述 JDBC连接数据库,求大神帮解决啊,我怎么也解决不了了... java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(Web

求SQL高手帮我写一个存储过程,万分感谢!

问题描述 求SQL高手帮我写一个存储过程,万分感谢! 求高手帮帮我..是一个保险类的表.要展示出目标值 实际值 达成率 上年同期 同比增长 指标代码都在图里 解决方案 拍照技术太差了,都不好看 解决方案二: 再记一个SQL分页存储过程 解决方案三: 会是会,但是不太想写, 一.题目要求资料看不清 二.50C吸引力不大 三.如果是你的作业,那你还是自己动手练习:如果是你的工作,那这价值可不止50C

javase-Java连接derby报错,求大神帮解决下~

问题描述 Java连接derby报错,求大神帮解决下~ 解决方案 http://tieba.baidu.com/p/1415330675 用SYS登录时不可以进行建表操作,看样子derby的确有权限控制存在.哼哼哼哼--- 另,用户名中不能存在字符,刚才在用户名中包含了一个;号,结果出现了 错误 58009:网络协议异常:在 DSS 链中的下一个 DSS 段与当前段具有相同的标识号.连接已终止.错误 08004:发生连接认证失败.原因:用户无权访问数据库. 这样的错误 解决方案二: http:/