@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(); } }
public void save(Article article) { this.hibernateTemplate.save(article); this.hibernateTemplate.flush(); this.hibernateTemplate.clear(); } 这地方存的
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”。