前提条件:你的类必须继承HibernateDaoSupport
一:
回调函数:
[code]
public List getList(){
return (List ) getHibernateTemplate().execute(
new HibernateCallback() {
public List doInHibernate(final Session s)
throws HibernateException, SQLException {
StringBuffer sb = new StringBuffer();
Query query = s.createSQLQuery(sb.toString());//[b]执行普通sql[/b]
Query query = s.createQuery(sb.toString());// [b]执行hql [/b]
List list = query.list();
return list ;
}
});
}
[/code]
采用这种做法的好处是:不用关心事务。session的创建和销毁,一切都在程序内部完成。看看名字doInHibernate就知道好处了。不好的是程序看起来比较乱!个人认为。
二:
[code]
getHibernateTemplate().find():
List list = getHibernateTemplate().find(String sql ):
[/code]
这种的前提是sql必须是hql ,原始sql 不能执行。
三:
自己获取session处理。
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview,个人认为不推荐使用!
其他:
getHibernateTemplate.delete(Object);
getHibernateTemplate.save(Object);
getHibernateTemplate.update(Object);
总结:推荐使用回调函数。
一:
回调函数:
[code]
public List getList(){
return (List ) getHibernateTemplate().execute(
new HibernateCallback() {
public List doInHibernate(final Session s)
throws HibernateException, SQLException {
StringBuffer sb = new StringBuffer();
Query query = s.createSQLQuery(sb.toString());//[b]执行普通sql[/b]
Query query = s.createQuery(sb.toString());// [b]执行hql [/b]
List list = query.list();
return list ;
}
});
}
[/code]
采用这种做法的好处是:不用关心事务。session的创建和销毁,一切都在程序内部完成。看看名字doInHibernate就知道好处了。不好的是程序看起来比较乱!个人认为。
二:
[code]
getHibernateTemplate().find():
List list = getHibernateTemplate().find(String sql ):
[/code]
这种的前提是sql必须是hql ,原始sql 不能执行。
三:
自己获取session处理。
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview,个人认为不推荐使用!
其他:
getHibernateTemplate.delete(Object);
getHibernateTemplate.save(Object);
getHibernateTemplate.update(Object);
总结:推荐使用回调函数。
本文介绍了三种使用Hibernate进行数据操作的方法:通过回调函数实现的通用数据访问、利用getHibernateTemplate().find()执行HQL查询以及直接获取Session进行操作。讨论了各自的优缺点,并推荐使用回调函数来避免事务管理和Session操作。
154

被折叠的 条评论
为什么被折叠?



