看到一篇很好描述HibernateDaoSupport类使用的例子,特此在这和大家分享一下
核心提示:1、 继承了HibernateDaoSupport类的类获取session时,已不可用SessionFactory.OpenSessioon的形式来获 取Session了,由于HibernateDaoSupport本身已有获取session的方法getSession(),所以直接用Session se=this.getSession();来获取, 2、 在依据hql获取用户
1、 继承了HibernateDaoSupport类的类获取session时,已不可用SessionFactory.OpenSessioon的形式来获 取Session了,由于HibernateDaoSupport本身已有获取session的方法getSession(),所以直接用Session se=this.getSession();来获取,
2、 在依据hql获取用户信息时,继承了HibernateDaoSupport类的类中不能在使用Query类了,而是用List list = this.getHibernateTemplate().find(hql);形式来获取实体类集合
实例:
Java类篇:
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import entity.Ssh;
public class SshDAO extends HibernateDaoSupport {
// private SessionFactory sf = null;
//
// public SessionFactory getSf() {
// return sf;
// }
//
// public void setSf(SessionFactory sf) {
// this.sf = sf;
// }
// public String print(int id) {
// Session se = sf.openSession();
// String hql = “from Ssh where id=” + id;
// Query q = se.createQuery(“hql”);
// List list = q.list();
// String a = list.get(1).getName();
// return a;
// }
public String print(int id) {
Session se =this.getSession();//获取Session对象
String hql = "from Ssh where id=" + id;
//依据hql获取实体集合,此处不要用Query类来实现
List<Ssh> list = this.getHibernateTemplate().find(hql);
String a = list.get(0).getName();
return a;
}
public static void main(String[] args) {
ApplicationContext ac=newClassPathXmlApplicationContext
(“spring/spring.xml”);
SshDAO ssh=(SshDAO)ac.getBean("sshD");
System.out.println(ssh.print(1));
}
}
Spring.xml 文件篇:
在spring中配置继承了HibernateDaoSupport的类时此处的sessionFactory不能自定义! Sf为spring中的SessionFacotry的id
<property name="sessionFactory">
<ref bean="sf" />
</property>
</bean>