-------------------------------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整合的更多相关文章
-
基于Myeclipse的三大框架(SSH)整合
文中主要基于Myeclipse进行配置,配置流程为:Hibernate --> Spring --> 整合 --> struts2 -->整合.注意:在此文中,主要讲述基于注解 ...
-
三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...
-
SSH三大框架的整合
SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...
-
JavaEE三大框架的整合
JavaEE三大框架的整合 ...
-
SSM三大框架的整合
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...
-
[转]JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...
-
JAVA三大框架SSH的各自作用
一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...
-
JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 ...
-
javaweb三大框架SSH
1.MVC三层架构:模型层,控制层和视图层.模型层,用Hibernate框架让来JavaBean在数据库生成表及关联,通过对JavaBean的操作来 对数据库进行操作:控制层,用Struts框架来连接 ...
随机推荐
-
Oracle ORA-12154: TNS: 无法解析指定的连接标识符”错误
主要原因: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务. 2.database ...
-
《JavaScript修炼之道》读书笔记
1.参考书目 入门:<JavaScript DOM编程艺术>第二版 进阶:<JavaScript高级程序设计>第二版.<JavaScript编程精粹> <Ja ...
-
Objective-C内存管理与原理
尽管苹果在 iOS 5/ Mac OS X 10.7 开始导入ARC,利用 Xcode4.2 可以使用该机能.ARC就是自动引用计数,是一项为Objective - C程序在编译时提供自动内存管理的功 ...
-
(未解决)在JSTL中,session 和 sessionScope 有什么区别 ??
在JSP页面中,使用JSTL标签获取Session中的值并显示 为何当使用 ${session.user} 时,页面跳转后,第一次能够成功显示, 但是单击按钮重定向的时候,就获取不到了? 而使用 ${ ...
-
IntelliJ IDEA 2017.1.4 x64配置说明
只是为了研究下idea这款编译器怎么使用.开门见山,说下如何配置这款编译器,不配置也能用,但是强迫症表示不服.下面直入正题: 下载与安装就不说了,除了更改安装目录外,没啥注意的地方,建议下载idea去 ...
-
关于PHP魔术方法__call的一点小发现
好久没有上博客园写文章了,今晚终于有点空了,就来写一下昨天的一点小发现. 我自己所知,C++,Java的面向对象都有多态的特点,而PHP没有,但PHP可以通过继承链方法的重写来实现多态的属性.而魔术方 ...
-
Asp.net Core 2.1新功能Generic Host(通用主机),了解一下
什么是Generic Host ? 这是在Asp.Net Core 2.1加入了一种新的Host,现在2.1版本的Asp.Net Core中,有了两种可用的Host. Web Host –适用于托管W ...
-
LVS负载均衡群集
概述 群集的类型:无论是哪种服务器,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机.根据群集所针对的目标差异,可以分为以下三个类型: 1.负 ...
-
Edit Distance II
Given two strings S and T, determine if they are both one edit distance apart. Example Given s = &qu ...
-
Docker应用三:Dockerfile使用介绍(以安装redis为例)
Dockerfile使用介绍 一.Dockerfile介绍 Dockerfile用于自定义创建docker镜像,是由一行行命令组成的文件. Docker file中的命令根据作用分为四类: 1.1.指 ...