SSH2 问题,求SSH2高手帮解决 本帖最后由 Drunkard_Faron 于 2014-11-13 15:23:18 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码如下连接池会超时的代码:@SuppressWarnings("unchecked") @Override public List<Object[]> getObjectList() throws Exception { String sqlString = ""; List<Object[]> list = null; try { sqlString += " SELECT a.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.name card_type_name," + "p2.name sex_name," + "p3.name nation_name," + "p4.name political_name," + "c.name center_name," + "g.name gradation_name," + "s.name specialty_name," + "pr.ProvinceName," + "ci.CityName," + "di.DistrictName"; sqlString += " FROM apply a"; sqlString += " LEFT JOIN parameter p1 ON p1.id = a.card_type"; sqlString += " LEFT JOIN parameter p2 ON p2.id = a.sex"; sqlString += " LEFT JOIN parameter p3 ON p3.id = a.nation"; sqlString += " LEFT JOIN parameter p4 ON p4.id = a.political"; sqlString += " LEFT JOIN center c ON c.id = a.center_id"; sqlString += " LEFT JOIN gradation g ON g.id = a.gradation_id"; sqlString += " LEFT JOIN specialty s ON s.id = a.specialty_id"; sqlString += " LEFT JOIN province pr ON pr.ProvinceID = a.province_id"; sqlString += " LEFT JOIN city ci ON ci.CityID = a.city_id"; sqlString += " LEFT JOIN district di ON di.DistrictID = a.district_id"; sqlString += " INNER JOIN (" + "SELECT MAX(update_datetime) max_update_datetime,apply_user_id " + "FROM apply GROUP BY apply_user_id" + ") l_a"; sqlString += " ON l_a.apply_user_id = a.apply_user_id AND l_a.max_update_datetime = a.update_datetime"; sqlString += " ORDER BY a.apply_user_id DESC,a.update_datetime DESC"; list = this.getSession().createSQLQuery(sqlString).list(); } catch (Exception e) { log.error(e); throw e; } return list; }连接池不会超时的代码:@SuppressWarnings("unchecked") @Override public List<Apply> getApplyListByApplyUserId(String applyUserId) throws Exception { String sqlString = "FROM Apply m WHERE m.applyUserId=? ORDER BY m.updateDatetime DESC"; List<Apply> list = new ArrayList<Apply>(); try { Query query = this.getSession().createQuery(sqlString); query.setString(0, applyUserId); list = query.list(); } catch (Exception e) { log.error(e); throw e; } return list; } 你是用Hibernate中用连接池的方式是吧、要是这样的、就应该在Tomcat中配置web.xml和context.xml\连接池的、 这个你配置好了吗? 回复2楼,那个都配置了,跟Tomcat无关,是session没有关闭连接池。 其实这种情况一般都用Profile工具跟踪一下就知道了;如果真的是连接未释放的问题,跟踪跟踪源代码就清楚了。 首先,我认为createSQLQuery和createQuery的区别在于功能,和连接没有关系。前面可以跑sql,返回一个list,后者只能hql,返回对象list。其次,session是肯定可以释放的,一般大型项目都是通过配置最大最小连接和空闲连接时间来达到性能和连接数的平衡。 谁能提供下webservice的电子书呢? 下载整个网站的软件 实际正式项目部署tomcat的时候用那个呀 dom4j解析带命名空间的问题 怎样用WriteObject向文件中写入一个一个对象,然后,再用ReadObject一次全读出来? java 正则表达式问题,求超神 关于jdbc的一点问题,希望得到帮助! java中的数组.参数问题 关于java的安装配置 java怎么编译?来着有分!! iBATIS还是Hibernate public Class getColumnClass,s(int c)报错,请问怎么解决?
连接池会超时的代码:
@SuppressWarnings("unchecked")
@Override
public List<Object[]> getObjectList() throws Exception {
String sqlString = "";
List<Object[]> list = null;
try {
sqlString += " SELECT a.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.name card_type_name," + "p2.name sex_name," + "p3.name nation_name," + "p4.name political_name," + "c.name center_name," + "g.name gradation_name," + "s.name specialty_name," + "pr.ProvinceName," + "ci.CityName," + "di.DistrictName";
sqlString += " FROM apply a";
sqlString += " LEFT JOIN parameter p1 ON p1.id = a.card_type";
sqlString += " LEFT JOIN parameter p2 ON p2.id = a.sex";
sqlString += " LEFT JOIN parameter p3 ON p3.id = a.nation";
sqlString += " LEFT JOIN parameter p4 ON p4.id = a.political";
sqlString += " LEFT JOIN center c ON c.id = a.center_id";
sqlString += " LEFT JOIN gradation g ON g.id = a.gradation_id";
sqlString += " LEFT JOIN specialty s ON s.id = a.specialty_id";
sqlString += " LEFT JOIN province pr ON pr.ProvinceID = a.province_id";
sqlString += " LEFT JOIN city ci ON ci.CityID = a.city_id";
sqlString += " LEFT JOIN district di ON di.DistrictID = a.district_id";
sqlString += " INNER JOIN (" + "SELECT MAX(update_datetime) max_update_datetime,apply_user_id " + "FROM apply GROUP BY apply_user_id" + ") l_a";
sqlString += " ON l_a.apply_user_id = a.apply_user_id AND l_a.max_update_datetime = a.update_datetime";
sqlString += " ORDER BY a.apply_user_id DESC,a.update_datetime DESC";
list = this.getSession().createSQLQuery(sqlString).list();
} catch (Exception e) {
log.error(e);
throw e;
}
return list;
}
连接池不会超时的代码:
@SuppressWarnings("unchecked")
@Override
public List<Apply> getApplyListByApplyUserId(String applyUserId) throws Exception {
String sqlString = "FROM Apply m WHERE m.applyUserId=? ORDER BY m.updateDatetime DESC";
List<Apply> list = new ArrayList<Apply>();
try {
Query query = this.getSession().createQuery(sqlString);
query.setString(0, applyUserId);
list = query.list();
} catch (Exception e) {
log.error(e);
throw e;
}
return list;
}
其次,session是肯定可以释放的,一般大型项目都是通过配置最大最小连接和空闲连接时间来达到性能和连接数的平衡。