SSH整合hibernate笔记

本文档详细介绍了如何进行SSH(Struts2、Spring、Hibernate)整合,包括导入相关依赖,配置pom.xml和web.xml,集成Hibernate,程序代码分层,以及具体的整合案例演示。此外,还涉及到web.xml的配置,如Spring上下文加载,防止内存泄露的监听器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导入对应jai包

1、配置

pom.xml

<!--第一步就是配置maven-compiler-plugin插件-->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.7.0</version>
	<configuration>
		<source>1.7</source>
		<target>1.7</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>

在这里插入图片描述

web.xml

<!-- 第二步修改web.xml由2.3至3.0 -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

在这里插入图片描述

2、pom.xml添加


## <!-- 优化版本,便于修改 -->

  	<properties>
		<hibernate.version>5.2.12.Final</hibernate.version>
		<mysql.version>5.1.44</mysql.version>
		<spring.version>5.0.1.RELEASE</spring.version>
		<struts2.version>2.5.13</struts2.version>
		<slf4j.version>1.7.7</slf4j.version>
		<log4j.version>2.9.1</log4j.version>
		<disruptor.version>3.2.0</disruptor.version>
		<junit.version>4.12</junit.version>
		<servlet.version>4.0.0</servlet.version>
		<jstl.version>1.2</jstl.version>
		<standard.version>1.1.2</standard.version>
		<tomcat-jsp-api.version>8.0.47</tomcat-jsp-api.version>
	</properties>

① hibernate相关(5.2.12.Final)
hibernate-core
hibernate-c3p0(数据库连接池)
hibernate-ehcache
mysql-connector-java(5.1.44)

<!-- 1、导入hibernate依赖 -->
    		<!-- 1、hibernate相关(5.2.12.Final) -->
		<!-- 1、hibernate相关(5.2.12.Final) -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-c3p0</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-ehcache</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>

② spring相关(5.0.1.RELEASE)
spring-context
spring-orm
spring-web
spring-aspects

<!-- 2、导入spring依赖 -->
    	<!-- 2、spring相关(5.0.1.RELEASE) -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</version>
		</dependency>

注意:创建spring的XML文件时,需要添加beans/aop/tx/context标签支持

③ struts2相关(2.5.13)
struts2-core
struts2-spring-plugin
struts2与spring集成的插件
将action配置到spring中,struts的action标签的class属性填写spring中bean的名字或id

	<!-- 3、struts2相关(2.5.13) -->
	<dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-core</artifactId>
		<version>${struts2.version}</version>
	</dependency>

	<dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-spring-plugin</artifactId>
		<version>${struts2.version}</version>
	</dependency>

④ log配置(日志系统)
<1> log4j(1.X版)
<2> log4j2(2.9.1)
log4j-core
log4j-api
log4j-web

<!-- 4、导入日志系统依赖(log配置):Log4j2 + Slf4j -->
		<!-- slf4j核心包 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${slf4j.version}</version>
			<scope>runtime</scope>
		</dependency>
		<!--用于与slf4j保持桥接 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<!--核心log4j2jar包 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<!--web工程需要包含log4j-web,非web工程不需要 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-web</artifactId>
			<version>${log4j.version}</version>
			<scope>runtime</scope>
		</dependency>
		<!--需要使用log4j2的AsyncLogger需要包含disruptor -->
		<dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<version>${disruptor.version}</version>
		</dependency>

⑤ other
<1> junit(4.12)
javax.servlet-api(4.0.0

<!--  5.1、junit -->
    	<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

<2>servlet

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>${servlet.version}</version>
			<scope>provided</scope>
		</dependency>

<3> jstl
jstl(1.2)
standard(1.1.2)

	<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>${jstl.version}</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>${standard.version}</version>
		</dependency>

<4> jsp自定义标签依赖(必须与tomcat的版本一致)
tomcat-jsp-api

<!--  5.4、 tomcat - jsp - api -->
    	<dependency>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>tomcat-jsp-api</artifactId>
			<version>${tomcat-jsp-api.version}</version>
		</dependency>

3、测试

点击该项目—>右键(Run As)—>选择9 Maven test

在这里插入图片描述

二、 SSH集成

① 导入ehcache.xml
② 导入log4j2.xml
在这里插入图片描述

③ 集成hibernate
<1> 注入数据库配置文件
在这里插入图片描述

 <2> 配置c3p0连接池

在这里插入图片描述
<3>注册LocalSessionFactoryBean
在这里插入图片描述
<4> spring声明式事物
声明式事务配置
1) 必须先修改spring配置文件的声明部分,添加对aop标签和tx标签的支持
2) 配置SessionFactory(spring和hibernate集成时已完成)
3) 配置事务管理器
HibernateTransactionManager
4) 配置事务的传播特性(tx)
add
edit
del
load|list
事务传播特性(PROPAGATION_REQUIRED|readOnly)
在这里插入图片描述

5) 配置自动代理
	    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181110091627850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE2MzA2Mg==,size_16,color_FFFFFF,t_70)
 6) 注册HibernateTemplate

说明:在dao方法中要继承HibernateDaoSupport,其目的是为了得到hibernateTemplete. 得到hibernateTemplete是为了操作数据库

7) 注册Base模块

三、程序代码的分层(base模块)

Base:
①action
②biz
③dao
④entity
Book
①action
②biz
③dao
④entity

四、 整合案例演示

(1) entity
*.hbm.xml

(2)dao
IXxxDAO
XxxDAOImpl(继承HibernateDaoSupport类,方便注入HibernateTemplate)
applicationContext-Xxx.xml

	查询
		this.getHibernateTemplate().execute(

(3) biz
IXxxBiz
XxxBizImpl
applicationContext-Xxx.xml

(4) test(junit4)

(5)action
将action配置到applicationContext-Xxx.xml,
注:必须为多例模式(重要)

struts.xml配置注意事项:
  1)
  <!-- 将action创建交由spring容器来管理 -->
  <constant name="struts.objectFactory" value="spring"></constant>
  
  2)struts-Xxx.xml文件中的action的class属性类型填写spring中的id。

五、web.xml配置

1、Spring上下文ApplicationContext.xml的加载

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>

2、启动Web容器时,自动装配ApplicationContext.xml的配置信息

  <listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

3、中文乱码过滤器

 <filter>
	<filter-name>encodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<async-supported>true</async-supported>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
  </filter>
  <filter-mapping>
	<filter-name>encodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
  </filter-mapping>

4、其他配置
① 防止内存泄露、缓存清除监听器

    <listener>
	<listener-class>
	    org.springframework.web.util.IntrospectorCleanupListener
	</listener-class>
     </listener>
②用于支持3种Bean的作用域:request,session和globalSession
  <listener>
	<listener-class>			org.springframework.web.context.request.RequestContextListener
	</listener-class>
     </listener>

③ 把session的关闭延迟到jsp页面显示之后,请配在struts2上面

  <filter>
	<filter-name>OpenSessionInView</filter-name>
	<filter-class>		org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
	</filter-class>
     </filter>
     <filter-mapping>
	<filter-name>OpenSessionInView</filter-name>
	<url-pattern>/*</url-pattern>
     </filter-mapping>

5、 Struts2核心过滤器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值