-------------------------------Spring整合Hibernate-------------------------------

一、为什么要整合Hibernate?
1、使用Spring的IOC功能管理SessionFactory对象
     LocalSessionFactoryBean
2、使用Spring管理Session对象 
     HibernateTemplate
3、使用Spring的功能实现声明式的事务管理

二、引入Spring和Hibernate公共的JAR文件(共计28个)

Spring-orm是Spring和hibernate整合的核心JAR文件

以股票案例为例--添加股票:

1.搭建分层 在entity中定义一个名称为Stock的类,并封装属性。 同时定义了名称Stock.hbm.xml

Stock:

Stock.hbm.xml:

定义接口IStockDao,并自定义add方法

public interface IStockDao {
//添加账户
public int addStock(Stock stock); }

定义接口实现类StockDaoImpl,并重写add(),在该类中植入sessionFactory,通过调用getCurrentSession()中的save方法获取到stock

业务逻辑层Service。定义接口IStockService

public interface IStockService {

    // 添加股票
public int addStock(Stock stock); }

  

接口的实现类,StockServiceImpl实现接口,重写方法,并返回到dao的add方法  

public class StockServiceImpl implements IStockService{
//植入dao private IStockDao stockDao; //添加股票
public int addStock(Stock stock) {
return stockDao.addStock(stock);
}

  

applicationContext.xml大配置:※※※※※※※

注:在大配置中,首先需要配置C3P0数据源,打通与Oracle的连接,其次是事务管理器,以及SessionFactory的配置,并植入DataSource数据源,各种hibernate属性并关联小配置。最后就是配置DAO以及Service

<?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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- sessionFactory 的配置-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 各种hibernate属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
</props>
</property> <!-- 引入小配置 -->
<property name="mappingLocations" value="classpath:cn/happy/entity/Stock.hbm.xml"></property>
</bean> <!-- c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="oracle.jdbc.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="user" value="wj"></property>
<property name="password" value="9090"></property>
</bean> <!-- StockDAO -->
<bean id="stockDao" class="cn.happy.daoImpl.StockDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- StockService -->
<bean id="service" class="cn.happy.serviceImpl.StockServiceImpl"> <property name="stockDao" ref="stockDao"></property>
</bean> <!-- 事务管理器 -->
<bean id="mytx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!--Aspectj AOP配置事务 --> <tx:advice id="txAdvice" transaction-manager="mytx">
<tx:attributes>
<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice> <aop:config>
<aop:pointcut expression="execution(* *..service .*.*(..))" id="pointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config> </beans>

  

测试类: 

public class Test01 {
@Test
public void addTest(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); IStockService service=(IStockService)ctx.getBean("service"); Stock stock=new Stock();
stock.setSname("逗比");
stock.setCount(22); service.addStock(stock);
System.out.println("ok!!!");
}

实现效果:  

(附带一图:)

-------------------------------Spring整合Struts-------------------------------

1、引入JAR文件:

在Struts2中 :struts2-spring-plugin-2.3.24.jar
作用: 获取容器,读取Spring容器创建的各个bean
在Spring中: spring-web-4.2.0.RELEASE.jar 
作用:在ServletContext初始化的时候自动注入Spring容器

(注意:下面的代码是在上面Spring整合Hibernate的基础上修改添加的)

2、创建Action类StockAction并继承ActionSupport

3、编写struts.xml

大配置:applicationContext.xml。需要在Action中注入Service

4、Web.xml的配置:[核心点]---需指定配置文件的位置和监听器。

监听器作用是在整个网站运行的时候,获取到ServletContext(application)初始化的时候,自动
注入Spring容器!

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 指定配置文件的位置和名称 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!-- 监听器 作用是在整个网站运行的时候,获取到ServletContext(application)初始化的时候,自动
注入Spring容器--> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>  

  

5、准备简单的表单页面

最后创建页面进行访问:

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'add.jsp' starting page</title>
</head> <body>
<form action="addStock" method="post">
股票名称:<input name="sname"/>
股票股数:<input name="scount"/>
<input type="submit" value="提交"/>
</form> <%-- <s:form action="addStock" method="post">
股票名称:<s:textfield name="stock.sname"></s:textfield>
股票股数:<s:textfield name="stock.scount"></s:textfield>
<input type="submit" value="提交"/>
</s:form> --%>
</body>
</html>

  

成功页面:

index.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
</head> <body>
成功了!!!!
</body>
</html>

(附带一图:)

三大框架SSH整合的更多相关文章

  1. 基于Myeclipse的三大框架(SSH)整合

    文中主要基于Myeclipse进行配置,配置流程为:Hibernate --> Spring --> 整合 --> struts2 -->整合.注意:在此文中,主要讲述基于注解 ...

  2. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  3. SSH三大框架的整合

    SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...

  4. JavaEE三大框架的整合

    JavaEE三大框架的整合                                                                                       ...

  5. SSM三大框架的整合

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...

  6. [转]JAVA三大框架SSH和MVC

    Java—SSH(MVC) JAVA三大框架的各自作用  hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...

  7. JAVA三大框架SSH的各自作用

        一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...

  8. JAVA三大框架SSH和MVC

    Java—SSH(MVC) JAVA三大框架的各自作用    hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 ...

  9. javaweb三大框架SSH

    1.MVC三层架构:模型层,控制层和视图层.模型层,用Hibernate框架让来JavaBean在数据库生成表及关联,通过对JavaBean的操作来 对数据库进行操作:控制层,用Struts框架来连接 ...

随机推荐

  1. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  2. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

  3. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  4. geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)

    目录 前言 实现过程 总结 一.前言        上一篇文章介绍了如何使用Geotrellis渲染单波段的栅格数据,已然很是头疼,这几天不懈努力之后工作又进了一步,整清楚了如何使用Geotrelli ...

  5. PHP与JAVA构造函数的区别

    早期的PHP是没有面向对象功能的,但是随着PHP发展,从PHP4开始,也加入了面向对象.PHP的面向对象语法是从JAVA演化而来,很多地方类似,但是又发展出自己的特色.以构造函数来说,PHP4中与类同 ...

  6. 4.Android 打包时出现的Android Export aborted because fatal error were founds [closed]

    Android 程序开发完成后,如果要发布到互联网上供别人使用,就需要将自己的程序打包成Android 安装包文件(Android Package,APK),其扩展名为.apk.使用run as 也能 ...

  7. Java定时任务的常用实现

    Java的定时任务有以下几种常用的实现方式: 1)Timer 2)ScheduledThreadPoolExecutor 3)Spring中集成Cron Quartz 接下来依次介绍这几类具体实现的方 ...

  8. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  9. 超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...

  10. 修改MySQL默认字符集编码

    好记心不如烂笔头,很多东西当时没记下来,过了就忘了,下次用到时又得浪费好多时间才能解决.今天又遇到修改MySQL默认字符集编码的问题,折腾了半天解决了,赶快记录下来,以后就不用每次折腾了. 查看MyS ...