SSH整合学习笔记之spring与hibernate简单整合.doc

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: SSH整合学习笔记 大致的学习了一下struts1.x struts2.x  spring2.5 hibernate3.6,觉得东西很多,好些东西都记不住,最后发现想记住的方法就是多练习。自己多写一下简单的工程也会把这些知识巩固,但是公司现在不用这个,所以只能记下笔记,不忙的时候再拿来看看,坚持的练习一下。我也是初学,所以只是记下一些基础的东西,如果写错了什么,请朋友多多指出。 个人对

SSH整合学习笔记

大致的学习了一下struts1.x struts2.x  spring2.5 hibernate3.6,觉得东西很多,好些东西都记不住,最后发现想记住的方法就是多练习。自己多写一下简单的工程也会把这些知识巩固,但是公司现在不用这个,所以只能记下笔记,不忙的时候再拿来看看,坚持的练习一下。我也是初学,所以只是记下一些基础的东西,如果写错了什么,请朋友多多指出。

个人对SSH的理解也不算深入,只是大概的学完一圈觉得spring很强大,有的人觉得spring很难学,但是我觉得struts很难学,要记得的东西很多,加上不用,迟早会忘记的。所以总结说来没难易之分。只看你用了多少,写了多少。

写的多了不会也会了。这里简单的写一下整合SSH自己的方法。不对之处请多多批评。

个人观点:SSH就是有一个javaweb的变化封装而已,其实在整合之前,你学会哪个框架都可以单独出来使用。互不影响。整合SSH最简单直接的办法就是先整合spring和hibernate,实现业务逻辑与DAO层的整合。然后再将struts与spring进行整合,这个以spring为中心就把SSH整合到了一起。Struts1.x和Struts2.x在与Spring整合的时候会略有不同。

进入正题:要整合SSH首先必备的是jar包。这里是我们将会用到的所有的jar包:可以到我的资源里下载,当然去官网找更好了。

Hibernate3.6:共10个

antlr-2.7.6.jar

commons-collections-3.1.jar

dom4j-1.6.1.jar

hibernate3.jar

hibernate-jpa-2.0-api-1.0.0.Final.jar

javassist-3.12.0.GA.jar

jta-1.1.jar

log4j-1.2.15.jar

slf4j-api-1.6.1.jar

slf4j-log4j12-1.6.1.jar

Spring2.5:共7个

aspectjrt.jar

aspectjweaver.jar

cglib-nodep-2.1_3.jar

commons-codec.jar

commons-lang.jar

commons-logging.jar

spring.jar

      Struts2.x:

commons-io-1.3.2.jar

commons-fileupload-1.2.1.jar

freemarker-2.3.16.jar

ognl-3.0.jar

struts2-core-2.2.1.1.jar

struts2-spring-plugin-2.2.1.1.jar

xwork-core-2.2.1.1.jar

      Struts1.x:

                      antlr-2.7.2.jar

commons-beanutils-1.8.3.jar

commons-chain-1.1.jar

commons-digester-1.8.jar

commons-logging-1.0.4.jar

commons-validator-1.3.1.jar

oro-2.0.8.jar

struts-core-1.3.8.jar

struts-el-1.3.8.jar

struts-extras-1.3.8.jar

struts-faces-1.3.8.jar

struts-mailreader-dao-1.3.8.jar

struts-scripting-1.3.8.jar

struts-taglib-1.3.8.jar

struts-tiles-1.3.8.jar

      pool:

                      c3p0-0.9.1.2.jar

                      commons-dbcp-1.4.jar

                      c3p0-oracle-thin-extras-0.9.1.2.jar

      driver:         

                      mysql-connector-java-5.0.8-bin.jar

mysql-connector-java-5.1.5-bin.jar

ojdbc14.jar

      JSTL:

                      Jstl.jar

Standard.jar

      Junit:

                      junit-4.4.jar

      utils:

                      commons-codec-1.5.jar

                      commons-lang-2.5.jar

然后我们就打开IDE,我用的是MyEclipse8.6 搭建一个web project 注意JDK的版本和编译器的版本最好一致,否则会出现麻烦。在WEB-INF下的lib文件夹内导入我们的jar包。然后先从hibernate开始。SSH的jar包我们已经有了,接下来就是配置文件。Hibernate的配置文件在hibernate的源码包中可以找到,具体办法:到官网下载hibernate-distribution-3.6.0.Final-dist.zip这个文件然后将其解压----project----etc里面就可以看到hibernate.cfg.xml。

在web工程下建立一个Source folder可以起名为conf(这个随意),这个文件夹下将来存放我们所有的配置文件。首先把hibernate.cfg.xml拷贝到这个文件夹下。然后开始建包,无论用SSH还是用servlet去写工程,我们本着MVC三层架构去建立都要有的几个包:Dao包---存放DAO接口 ,  Dao.Impl包DAO实现类的包  ,Service包---存放Service接口,   Service.Impl包Service实现类的包,domain存放实体bean的包, action包 控制层的包(这里用Struts所以写的action包),test包 用于测试我们程序的包。这些包名都可以根据个人习惯随意命名。

我们采用正向工程的方式开始搭建:因为只是为了搭建SSH,所以很简单。

设计实体:

     Person实体:对应的属性:id integer类型 name String类型

这个时候我们需要一个实体对应的配置文件,可以去hibernate的源码包中搜索*.hbm.xml然后拷贝一个。在SSH整合时,这个配置文件和单独使用hibernate时配置一致。然后配置hibernate.cfg.xml文件。这里一般分为三步:一、数据库信息(方言+连接信息) 二、其他配置     三、声明自己的映射文件。因为后期我们整合SSH后要有spring来管理事务。所以数据配置的相关信息最终将在spring中配置。这里先配置是为了保证我们每配置一步做一步的测试,以保证程序的正确性,防止最后一起测试出现问题很难寻找与解决的情况发生。当配置好hibernate以后我们可以写一个test测试类测试一下。这里使用的是hibernate默认的连接池。C3P0的使用会在后面介绍。

Hibernate.cfg.xml  :

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

    <property name="hibernate.connection.password">root</property>

    <property name="hibernate.connection.username">root</property>

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring2hibernate</property>

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <property name="hibernate.show_sql">true</property>

    <property name="hibernate.hbm2ddl.auto">update</property>

    <mapping resource="com/ty/spring2hibernate/domain/Person.hbm.xml"/>

</session-factory>

</hibernate-configuration>

如果以上操作都完成且没问题,那么我们现在开始准备spring的环境,同样还是配置文件。拷贝一个配置文件到conf文件夹下。补充说明一下,因为在后期实现的时候有两种方式:一个是基于xml的方式,一个是基于注解的方式,这两种方式哪种都可以,但是不要混用。这里先是用XML方式,注解方式使用起来比较简单,但是整理笔记比较麻烦。如果明白了XML方式的原理步骤,那么注解的方式也都是一样的,不过是写法的不同而已。

在准备好以上步骤后,我们就要开始写我们的工程了。先做一下分析:一般是由浏览器接收请求,交由控制层,然后控制层调用service层,service再调用dao层。那么我们现在就写这三层最基本的代码。只摘录了主要部分:

//Service 业务层接口

public interface PersonService {

        public void savePerson(Person person);

}

//ServiceImpl 业务层实现

//由spring注入

    privatePersonDao personDao;

   

    public voidsavePerson(Person person) {

       //调用dao层的对象 

       personDao.savePerson(person);

    }

   

    public PersonDaogetPersonDao() {

       returnpersonDao;

    }

 

    public voidsetPersonDao(PersonDao personDao) {

       this.personDao= personDao;

    }

//DAO  dao层接口

public interface PersonDao {

  public voidsavePerson(Person person);

}

//DaoImpl  DAO层实现

 

private HibernateTemplate hibernateTemplate;

 

    public voidsavePerson(Person person) {

       //调用hibernate模板的方法保存

       hibernateTemplate.save(person);

    }

 

    publicHibernateTemplate getHibernateTemplate() {

       returnhibernateTemplate;

    }

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate){

       this.hibernateTemplate= hibernateTemplate;

    }

}

 

下面开始配置spring的applicationContext.xml文件。注意要引入的几个命名空间不可缺少。

首先就是sessionFactoty,它是整合spring与hibernate的入口。具体配置如下:

applicationContext.xml    :

<?xml version="1.0"encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:context="http://www.springframework.org/schema/context"

      xmlns:aop="http://www.springframework.org/schema/aop"

      xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="http://www.springframework.org/schema/beans

                        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

                        http://www.springframework.org/schema/context

                         http://www.springframework.org/schema/context/spring-context-2.5.xsd

                        http://www.springframework.org/schema/aop

                        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

                         http://www.springframework.org/schema/tx

                        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">

 

  <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="configLocation">

      <value>classpath:hibernate.cfg.xml</value>

    </property>

  </bean>

 

  <bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate">

      <property name="sessionFactory"ref="sessionFactory"/>

  </bean>

 

  <bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">

      <property name="sessionFactory"ref="sessionFactory"/>

  </bean>

 

   <tx:advice id="advice"transaction-manager="txManager">

      <tx:attributes>

         <tx:method name="save*" propagation="REQUIRED"isolation="DEFAULT" read-only="false"/>

         <tx:method name="*" read-only="true"/>

      </tx:attributes>

   </tx:advice>

   

  <aop:config>

    <aop:pointcut id="perform"expression="execution(*com.ty.spring2hibernate.service..*.*(..))"/>

    <aop:advisor advice-ref="advice"pointcut-ref="perform"/>

  </aop:config>

 

  <bean  id="personDao"class="com.ty.spring2hibernate.dao.impl.PersonDaoImpl">

     <property name="hibernateTemplate"ref="hibernateTemplate"/>

  </bean>

 

  <bean id="personService"class="com.ty.spring2hibernate.service.impl.PersonServiceImpl">

     <property name="personDao"ref="personDao"/>

  </bean> 

</beans>

OK !!!这个时候我们可以写一个测试类去测试一下spring与hibernate整合是否成功。其实你如果控制层不用struts,只用servlet的话,那么你现在就可以直接用了。

Test :

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");

       PersonService personService = (PersonService) ac

              .getBean("personService");

       Person person = new Person();

       person.setName("aaa");

       personService.savePerson(person);

以上是spring与hibernate的整合。只是简单的整合,一般实际应用当中我们会用连接池技术,连接数据库等配置都会在spring的配置文件中进行配置,由spring来管理事务。这些我将在后面的笔记中写到。

源码下载地址:

http://dlwt.csdn.net/fd.php?i=663834883854331&s=b9a9974e12cdac65a98f04a955c0acfb

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
9 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
1天前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
4 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
1天前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
8 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
70 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
2月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
40 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
3月前
|
Java 数据格式 微服务
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
📚 《滚雪球学Spring Boot》是由CSDN博主bug菌创作的全面Spring Boot教程。作者是全栈开发专家,在多个技术社区如CSDN、掘金、InfoQ、51CTO等担任博客专家,并拥有超过20万的全网粉丝。该教程分为入门篇和进阶篇,每篇包含详细的教学步骤,涵盖Spring Boot的基础和高级主题。
199 4
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
安全 Java 数据库
三更草堂 Spring Security学习总结(思路整理)
Spring Security学习总结(思路整理)
|
2月前
|
设计模式 Java 程序员
学习 Spring 源码的意义是什么呢?
研究Spring源码能深化框架理解,提升代码分析与设计能力,助您掌握设计模式及最佳实践,增强解决问题的效率,促进职业生涯发展,并激发技术热情。选择稳定版本,从核心模块开始,结合实际项目并参与社区,让学习之旅既充实又具乐趣。