连接数过多?
我也新手不会用hibernate
不懂
jdbc还能看懂点。。
我也新手不会用hibernate
不懂
jdbc还能看懂点。。
解决方案 »
- 求解数据库没外键,怎么建立实体关系
- 现在oracle developer2000过时了嘛?
- Web登录安全问题探讨
- jsp无法在tomcat的work文件夹里生成class文件
- (在线痴等)hibernate+oracle出现了错误。求解
- 很急!
- 连接数据库问题
- struts2.0 为什么自动加入dojo.require("dojo.widget.html.Tooltip")
- 有没有什么类似于struts tiles之类的东东?
- Java(jsp)虚拟主机千万不要选择万网
- The prefix "aop" for element "aop:config" is not bound.
- java ftp路径问题
import java.util.List;import javax.annotation.Resource;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;import com.ld.blog.common.MyConfig;
import com.ld.blog.dao.ArticleDao;
import com.ld.blog.model.Article;
import com.ld.blog.service.ListenService;@Component("ArticleDao")
public class ArticleDaoImpl implements ArticleDao{
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} public void save(Article article) {
this.hibernateTemplate.save(article);
this.hibernateTemplate.flush();
this.hibernateTemplate.clear();
} public List showArticle(int userId) {
ListenService ls=(ListenService) MyConfig.getServiceObj("ListenService");
List listenId=ls.getListenByUserId(userId);
String tempStr="";
String hql="";
if(!listenId.isEmpty())
{
for(int i=0;i<listenId.size();i++)
{
tempStr=tempStr+listenId.get(i).toString()+",";
}
tempStr=tempStr+userId;
hql="from Article a where a.userId in("+tempStr+") order by a.id desc";
}
else
{
hql="from Article a where a.userId="+userId+"order by a.id desc";
}
System.out.println(hql);
List articleList=this.hibernateTemplate.find(hql);
this.hibernateTemplate.flush();
this.hibernateTemplate.clear();
return articleList;
}//ʵ�ַ�ҳ��ʾ
public List findByPageBean(final int start, final int pageSize,final String hql) throws Exception
{
/* ListenService ls=(ListenService) MyConfig.getServiceObj("ListenService");
List listenId=ls.getListenByUserId(userId);
String tempStr="";
for(int i=0;i<listenId.size();i++)
{
tempStr=tempStr+listenId.get(i).toString()+",";
}
tempStr=tempStr+userId;*/
List list = null;
// hql="from Article a where a.userId in("+tempStr+") order by a.id desc";
try {
list = this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(start);
query.setMaxResults(pageSize);
List list = query.list();
return list;
}
});
} catch (Exception e) {
throw e;
}
return list;
} public int getArticleNum(int userId) {
return this.showArticle(userId).size();
} public int getPageNum(int userId) {
return this.getArticleNum(userId)/10+1;
} public int getMyArticleNum(int userId) {
// TODO Auto-generated method stub
String hql="from Article a where a.userId="+userId;
List l=this.hibernateTemplate.find(hql);
return l.size();
}
}
this.hibernateTemplate.save(article);
this.hibernateTemplate.flush();
this.hibernateTemplate.clear();
}
这地方存的
参见HIBERNATE指南 找到如下章节
hibernate.connection.release_mode 指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.
取值 auto (默认) | on_close | after_transaction | after_statement注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过SessionFactory.getCurrentSession得到的Session,所配置的CurrentSessionContext实现控制这些Session的连接释放模式。请参阅第 2.5 节 “上下文相关的(Contextual)Session”。