HibernateDaoSupport类的使用
1、 继承了HibernateDaoSupport类的类获取session时,已不可用SessionFactory.OpenSessioon的形式来获 取Session了,由于HibernateDaoSupport本身已有获取session的方法getSession(),所以直接用Session se=this.getSession();来获取,
2、 在依据hql获取用户信息时,继承了HibernateDaoSupport类的类中不能在使用Query类了,而是用List<Ssh> 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<Ssh> 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
- <bean id="sshD" class="dao.SshDAO">
- <property name="sessionFactory">
- <ref bean="sf" />
- </property>
- </bean>
- 注意:此种情况适应于实体Dao类时系统自动生成时