HibernateDaoSupport类的使用

看到一篇很好描述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<Ssh> list = this.getHibernateTemplate().find(hql);形式来获取实体类集合

实例:

Java类篇:

  1. import java.util.List;
  2. import org.hibernate.Query;
  3. import org.hibernate.Session;
  4. import org.hibernate.SessionFactory;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
  8. import entity.Ssh;
  9. public class SshDAO extends HibernateDaoSupport {
  10. //  private SessionFactory sf = null;
  11. //
  12. //  public SessionFactory getSf() {
  13. //     return sf;
  14. //  }
  15. //
  16. //  public void setSf(SessionFactory sf) {
  17. //     this.sf = sf;
  18. //  }
  19. //  public String print(int id) {
  20. //     Session se = sf.openSession();
  21. //     String hql = “from Ssh where id=” + id;
  22. //     Query q = se.createQuery(“hql”);
  23. //     List<Ssh> list = q.list();
  24. //     String a = list.get(1).getName();
  25. //     return a;
  26. //  }
  27.     public String print(int id) {
  28.        Session se =this.getSession();//获取Session对象
  29.        String hql = “from Ssh where id=” + id;
  30.        //依据hql获取实体集合,此处不要用Query类来实现
  31.        List<Ssh> list = this.getHibernateTemplate().find(hql);
  32.        String a = list.get(0).getName();
  33.        return a;
  34.     }
  35.     public static void main(String[] args) {
  36.        ApplicationContext ac=newClassPathXmlApplicationContext
  37. (“spring/spring.xml”);
  38.        SshDAO ssh=(SshDAO)ac.getBean(“sshD”);
  39.        System.out.println(ssh.print(1));
  40.     }
  41. }

Spring.xml 文件篇:

在spring中配置继承了HibernateDaoSupport的类时此处的sessionFactory不能自定义! Sf为spring中的SessionFacotry的id

  1. <bean id=”sshD” class=”dao.SshDAO”>
  2.        <property name=”sessionFactory”>
  3.            <ref bean=”sf” />
  4.        </property>
  5.     </bean>

注意:此种情况适应于实体Dao类时系统自动生成时

标签