`

SSH(Spring + Struts + Hibernate)—— 中

 
阅读更多
8、编写实现类

三种结合的实现形式:

1、  手工编写实现类,并定义SessionFactory属性,但需要手工进行Session的打开关闭,而且需要通过Spring注入SessionFactory对象

2、  继承HibernateDaoSupport,并通过Spring注入了SessionFactory,使用该方法对于c3p0的连接池,可以直接通过getSession 进行处理,但如果使用common-pool的连接池则还需要手工关闭连接。

3、  继承HibernateDaoSupport,并注入了hibernateTemplate属性,使用该方法可以完美的关闭和处理事务,但需要通过gethibernateTemplate来进行操作,而不能直接使用getSession进行处理。


第一种方法:手工编写实现类(开发不用)



package mldn.lin.dao.impl;



import java.util.List;



import mldn.lin.dao.NewsDAO;

import mldn.lin.pojo.News;



import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;



public class NewsDAOImpl implements NewsDAO {

  

    private SessionFactory sessionFactory;



    public void setSessionFactory(SessionFactory sessionFactory) {

       this.sessionFactory = sessionFactory;

    }



    public boolean doInsert(News news) throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       session.save(news);

       session.beginTransaction().commit();

       session.close();

       return true;

    }



    public boolean doRemove(int id) throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       session.delete(findById(id));

       session.beginTransaction().commit();

       session.close();

       return true;

    }



    public boolean doUpdate(News news) throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       session.update(news);

       session.beginTransaction().commit();

       session.close();

       return true;

    }



    public List<News> findAll() throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       List all = session.createCriteria(News.class).list();

       session.close();

       return all;

    }



    public List<News> findAll(int cp, int ls, String keyword) throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       String hql="FROM News WHERE title=? OR abstractnote=? OR content=?";

       Query q=session.createQuery(hql);

       q.setString(0, "%"+keyword+"%");

       q.setString(1, "%"+keyword+"%");

       q.setString(2, "%"+keyword+"%");

       List<News> all=q.list();

       session.close();

       return all;

    }



    public News findById(int id) throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       News news=(News) session.get(News.class, id);

       session.close();

       return news;

    }



    public int getAllCount() throws Exception {

       // TODO Auto-generated method stub

       Session session=sessionFactory.openSession();

       String hql="SELECT count(*) FROM News";

       Query q=session.createQuery(hql);

       List all=q.list();

       int count=0;

       if(all!=null && all.size()>0){

           count=((Long)all.get(0)).intValue();

       }

       session.close();

       return count;

    }

}



实现类中定义sessionfactory属性,需要使用Spring进行注入

将实现类配置到Spring管理中

    <bean id="newsdaoimpl" class="mldn.lin.dao.impl.NewsDAOImpl">

       <property name="sessionFactory">

           <ref bean="sessionFactory" />

       </property>

    </bean>

编写测试类进行测试

package mldn.lin.test;



import mldn.lin.dao.NewsDAO;



import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;



public class Test {

    public static void main(String[] args){

       ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

       NewsDAO newsdao=(NewsDAO) ctx.getBean("newsdaoimpl");

     

       try {

           System.out.println(newsdao.getAllCount());

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

     

    }

}



虽然这样可以使Spring结合hibernate进行开发,但是还需要用户自行编写Session的打开关闭、事务处理。




第二种方法:使用Spring中提供好的HibernateDaoSupport支持类

如果要解决以上问题,可以使用Spring中提供好的HibernateDaoSupport支持类来完成



编写实现类:

package mldn.lin.dao.impl;



import java.util.List;



import mldn.lin.dao.NewsDAO;

import mldn.lin.pojo.News;



import org.hibernate.Query;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;



public class NewsDAOImpl extends HibernateDaoSupport implements NewsDAO {



    public boolean doInsert(News news) throws Exception {

       // TODO Auto-generated method stub

       this.getSession().save(news);

       return true;

    }



    public boolean doRemove(int id) throws Exception {

       // TODO Auto-generated method stub

       this.getSession().delete(findById(id));

       return true;

    }



    public boolean doUpdate(News news) throws Exception {

       // TODO Auto-generated method stub

       this.getSession().update(news);

       return true;

    }



    public List<News> findAll() throws Exception {

       // TODO Auto-generated method stub

       return this.getSession().createCriteria(News.class).list();

    }



    public List<News> findAll(int cp, int ls, String keyword) throws Exception {

       // TODO Auto-generated method stub

       String hql="FROM News WHERE title=? OR abstractnote=? OR content=?";

       Query q=this.getSession().createQuery(hql);

       q.setString(0, "%"+keyword+"%");

       q.setString(1, "%"+keyword+"%");

       q.setString(2, "%"+keyword+"%");

       return q.list();

    }



    public News findById(int id) throws Exception {

       // TODO Auto-generated method stub

       return (News)this.getSession().get(News.class, id);

    }



    public int getAllCount() throws Exception {

       // TODO Auto-generated method stub

       String hql="SELECT count(*) FROM News";

       Query q=this.getSession().createQuery(hql);

       List all=q.list();

       int count=0;

       if(all!=null && all.size()>0){

           count=((Long)all.get(0)).intValue();

       }

       return count;

    }

}





继承的类中定义sessionfactory属性,需要使用Spring进行注入

将实现类配置到Spring管理中

    <bean id="newsdaoimpl" class="mldn.lin.dao.impl.NewsDAOImpl">

       <property name="sessionFactory">

           <ref bean="sessionFactory" />

       </property>

    </bean>

编写测试类进行测试

package mldn.lin.test;



import mldn.lin.dao.NewsDAO;



import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;



public class Test {

    public static void main(String[] args){

       ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

       NewsDAO newsdao=(NewsDAO) ctx.getBean("newsdaoimpl");

     

       try {

           System.out.println(newsdao.getAllCount());

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

     

    }

}



继承HibernateDaoSupport,并通过Spring注入了SessionFactory,使用该方法对于c3p0的连接池,可以直接通过getSession 进行处理,但如果使用common-pool的连接池则还需要手工关闭连接
分享到:
评论

相关推荐

    SSH(Spring+Struts2+Hibernate)整合步骤

    SSH (Spring+Struts2+Hibernate)整合步骤纯手写

    ssh框架整合详细步骤(spring+struts2+hibernate)

    在现代Web应用开发中,SSH(Struts2、Spring、Hibernate)框架因其各自独特的功能和优势,常被组合使用以构建高效、稳定且易于维护的系统。以下是针对SSH框架整合的具体实施步骤和思路。 #### 二、整合步骤详解 ##...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    图书管理系统spring+struts+hibernate

    library_ssh2可能是一个包含系统源代码的压缩文件,"ssh2"可能表示系统使用了Struts2、Spring2和Hibernate2这三个框架的早期版本。这个文件中应包含所有必要的Java源代码、配置文件、Web应用相关的资源(如JSP页面、...

    最简单的Spring+Struts2+Hibernate整合例子

    最简单的Spring+Struts2+Hibernate整合例子,MySql数据库,IDE是JavaEE版的Eclipse,tomcat7.0 ,实现功能:登录+注册+增删改查+一键清空数据库表的数据。所有jar文件都在里面了。

    ssh框架(spring+struts2+hibernate)

    SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,数据库持久化,以及强大的前端展示能力,使得开发者能高效地构建...

    ssh2整合(spring+struts2+hibernate)-附

    在SSH2整合中,Spring可以管理Struts2的Action和Hibernate的SessionFactory,使得事务管理变得更加方便。Spring可以配置声明式事务,这样在整个业务流程中,如果发生异常,所有改动都将被回滚,保证了数据的一致性。...

    Spring+Struts2+Hibernate,增删改查上传下载

    标题中的“Spring+Struts2+Hibernate”是一个经典的Java企业级应用开发框架组合,也被称为SSH框架。这个组合被广泛用于构建动态、数据驱动的Web应用程序。下面将详细阐述这三个框架以及它们在“增删改查(CRUD)”...

    spring+struts2+hibernate框架说明

    SSH框架,全称为Struts+Spring+Hibernate,是Java Web开发中广泛应用的开源框架组合。这一框架集成了解决Web层、业务层和持久层问题的三个核心组件。 首先,Struts是一个基于Servlet和JSP技术的MVC(Model-View-...

    Spring+Struts2+Hibernate酒店管理系统+Mysql执行文件

    的SSH框架系统,基于Spring+Struts2+Hibernate酒店管理系统,更有可直接导入的Mysql数据库文件,不需要你自己根据建立数据库和数据表,一切都是完美的,只需要你的电脑有Myeclipse和Mysql,项目就可直接跑起来!

    Spring+Struts2+Hibernate人力资源管理系统+Mysql执行文件

    的SSH框架系统,基于Spring+Struts2+Hibernate人力资源管理系,更有可直接导入的Mysql数据库文件,不需要你自己根据建立数据库和数据表,一切都是完美的,只需要你的电脑有Myeclipse和Mysql,项目就可直接跑起来!

    基于struts+spring+hibernate+oracle的移动ssh项目源码

    基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh...

    spring+struts+hibernate框架

    "Spring+Struts+Hibernate"(SSH)框架是Java Web开发中的经典组合,被誉为"三剑客"。这个框架集合提供了全面的企业级应用解决方案,帮助开发者构建高效、可扩展且易于维护的Web应用程序。 Spring框架是核心,它...

    java开发技术spring+struts2+hibernate(ssh)+ajax资料合集

    Java开发技术中,SSH(Spring、Struts2、Hibernate)和Ajax是四个核心的框架和技术,它们在构建高效、可维护的企业级Web应用中扮演着关键角色。下面将详细阐述这些技术及其相互间的配合。 首先,Spring框架是Java...

    IDEA下maven管理的SSH框架 spring4 + struts2 + hibernate3 小人员管理网站

    一个小型maven管理的ssh框架开发的人员管理网站,能基本对与ssh框架有一个基本了解,内容也不多,框架条理都分好了,易于学习。配置文件都有注解。默认字符集为UTF-8,数据库直接按照bean创建就行,注解形式无法自动...

    ssh(spring+struts+hibernate) 视频 整合

    需要自己下载,如果有问题,请联系我,我会尽快解决,谢谢大家的支持

    spring+struts2+hibernate(SSH整合)

    这是spring、struts2、hibernate三大框架的整合过程详细文档,有兴趣的可以看看,spring structs2

    基于ssh开发的实例代码(spring+struts+hibernate)

    此为我本人对SSH(spring+struts+hibernate)学习之后的心得,自己写的一个简单的基于SSH(spring+struts+hibernate)框架开发的小例子,里面有完成的源码,简单易懂,适合初学者。希望大家共同学习!

    SSH框架简单快速搭建MyEcplise 2013(spring2.5+struts2.1+hibernate3.1)

    通过以上步骤,您可以轻松地在MyEclipse 2013环境中搭建起基于Spring 2.5、Struts 2.1 和 Hibernate 3.1的SSH框架。这为您的Java Web项目开发提供了坚实的基础。需要注意的是,随着技术的发展,建议根据最新的框架...

    Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate

    Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate(一步一步的教你敲代码)(博客园,博客名称:Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate)

Global site tag (gtag.js) - Google Analytics