<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>整合 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E6%95%B4%E5%90%88/</link><description>Recent content in 整合 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 19 Nov 2017 19:57:31 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E6%95%B4%E5%90%88/index.xml" rel="self" type="application/rss+xml"/><item><title>Java学习笔记--SSH框架整合(struts2、spring4、hibernate5)</title><link>https://pangyd.com/post/175-java-ssh-struts2spring4hibernate5/</link><pubDate>Sun, 19 Nov 2017 19:53:27 +0800</pubDate><guid>https://pangyd.com/post/175-java-ssh-struts2spring4hibernate5/</guid><description>&lt;p style="text-align: center">&lt;span>&lt;span>&lt;strong>一、SSH三大框架的概述&lt;/strong>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>　&lt;/span>&lt;span>　&lt;/span>&lt;span>&lt;span>ssh为 struts+spring+hibernate的一个&lt;span>&lt;span>集成框架&lt;/span>&lt;/span>，是目前较流行的一种Web应用程序开源框架。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>　 &amp;nbsp;集成SSH框架的系统从职责上分为四层：&lt;span>&lt;span>&lt;span>表示层&lt;/span>&lt;/span>、&lt;span>&lt;span>业务逻辑层&lt;/span>&lt;/span>、&lt;span>数据持久层&lt;/span>和&lt;span>域模块层（实体层）&lt;/span>&lt;/span>，以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>&lt;span>struts2：&lt;/span>&lt;/span>　　&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>　　　&lt;span>　&lt;span>1、什么是struts2：&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>　　　　　　&lt;span>Struts2是一个基于MVC设计模式的Web应用框架，它本质上相当于一个servlet，在MVC设计模式中，Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品，是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心，采用拦截器的机制来处理用户的请求，这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开，所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化，但是相对于WebWork，Struts 2的变化很小。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>　　　　&lt;span>2、struts2框架的运行结构：&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>&lt;span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>　　　&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&amp;nbsp;&lt;/p>&lt;p>&lt;span>&lt;span>　　　　&lt;span>解析：&lt;/span>&lt;/span>&lt;/span>&lt;span>客户端发送请求(HttpServletRequest)到服务器，服务器接收到请求就先进入web.xml配置文件看看有没有配置过滤器，发现有struts2的过滤器，然后就找到struts.xml配置文件，struts.xml配置文件里有定义一个action，然后就去找到类名叫IndexAction这个类(此action类必须是继承ActionSupport接口)，并且实现了execute()方法，返回一个字符串为"success"给struts.xml配置文件，struts.xml配置文件的action会默认调用IndexAction类的execute()方法，result接收到了返回的字符串，然后查找结果字符串对应的(Result），result就会调用你指定的jsp页面将结果呈现，最后响应回给客户端。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>　　&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>　&lt;span>&lt;span>　&lt;span>spring：&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>&lt;span>&lt;span>　　　&lt;/span>&lt;/span>&lt;/span>&lt;span>&lt;span>&lt;span>1、什么是spring?&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>&lt;span>&lt;span>　　　　　&lt;span>　Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;span>&lt;span>&lt;span>&lt;span>&lt;span>&lt;span>&lt;span>　&lt;/span>　　　　　　&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;div class="para">　　　　　　　　&lt;span>&lt;span>轻量&lt;/span>——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外，Spring是非侵入式的：典型地，Spring应用中的对象不依赖于Spring的特定类。&lt;/span>&amp;nbsp;&lt;/div>&lt;div class="para">&lt;span>　　　　　　　　&lt;span>控制反转&lt;/span>——Spring通过一种称作控制反转（IoC）的技术促进了松耦合。当应用了IoC，一个对象依赖的其它对象会通过被动的方式传递进来，而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖，而是容器在对象初始化时不等对象请求就主动将依赖传递给它。&lt;/span>&lt;/div>&lt;div class="para">&lt;span>　　　　　　　&lt;span>&lt;span>　面向切面&lt;/span>&lt;/span>——Spring提供了&lt;span>面向切面编程&lt;/span>的丰富支持，允许通过分离应用的业务逻辑与系统级服务（例如审计（auditing）和事务（transaction）管理）进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责（甚至是意识）其它的系统级关注点，例如日志或事务支持。&lt;/span>&lt;/div>&lt;div class="para">&lt;span>　　　　　　　　&lt;span>容器&lt;/span>——Spring包含并管理应用对象的配置和生命周期，在这个意义上它是一种容器，你可以配置你的每个bean如何被创建——基于一个可配置原型（prototype），你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而，Spring不应该被混同于传统的重量级的EJB容器，它们经常是庞大与笨重的，难以使用。&lt;/span>&lt;/div>&lt;div class="para">&lt;span>　　　　　　　　&lt;span>框架&lt;/span>——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中，应用对象被声明式地组合，典型地是在一个XML文件里。Spring也提供了很多基础功能（事务管理、持久化框架集成等等），将应用逻辑的开发留给了你。&lt;/span>&lt;/div>&lt;p>&amp;nbsp;&lt;/p>&lt;p>&lt;span>&lt;span>　　&lt;span>　　2、spring的流程图：&lt;/span>&lt;/span>&lt;/span>&lt;span>&lt;span>　&lt;/span>　&lt;/span>&lt;span>&lt;span>　　&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/span>&lt;/span>&lt;/p>&lt;p>　　　&lt;span>　解析：&lt;/span>&lt;span>&lt;span>上图是在struts结构图的基础上加入了spring流程图，在web.xml配置文件中加入了spring的监听器，在struts.xml配置文件中添加“&lt;/span>&lt;span>&amp;lt;constant name="struts.objectFactory" value="spring" /&amp;gt;&lt;/span>&lt;span>”是告知Struts2运行时使用Spring来创建对象，spring在其中主要做的就是注入实例，将所有需要类的实例都由spring管理。&lt;/span>&lt;/span>&lt;/p>&lt;p>&amp;nbsp;&lt;/p>&lt;p>&lt;span>　　&lt;span>&lt;span>hibernate：&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>　　　&lt;/span>&lt;span>1、什么是hibernate？&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>　　　&lt;/span>&lt;span>　Hibernate是一个开放源代码的对象关系映射框架，它对JDBC进行了非常轻量级的对象封装，它将POJO与数据库表建立映射关系，是一个全自动的orm框架，hibernate可以自动生成SQL语句，自动执行，使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合，既可以在Java的客户端程序使用，也可以在Servlet/JSP的Web应用中使用，最具革命意义的是，Hibernate可以在应用EJB的J2EE架构中取代CMP，完成数据持久化的重任。&lt;/span>&lt;/span>&lt;/span>&lt;/p></description></item><item><title>SSH框架整合demo</title><link>https://pangyd.com/post/173-sshdemo/</link><pubDate>Sun, 19 Nov 2017 19:49:15 +0800</pubDate><guid>https://pangyd.com/post/173-sshdemo/</guid><description>&lt;h1>Struts、Spring、Hibernate整合&lt;/h1>&lt;h2>&lt;a name="t1">&lt;/a>一、创建web工程，搭建Struts框架开发环境：&lt;/h2>&lt;div>这里只导入了项目中所需要的重要的jar包，以后根据业务要求继续导入相关的包。&lt;br>&lt;/div>&lt;div>&lt;ol>&lt;li>步骤1：:导入struts框架所需的jar包&lt;/li>&lt;li>步骤2：在web.xml中配置struts2.0主过滤器&lt;/li>&lt;li>步骤3：导入struts.xml配置文件&lt;/li>&lt;/ol>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>web.xml&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">web-app&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"2.5"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://java.sun.com/xml/ns/javaee"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xmlns:xsi&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.w3.org/2001/XMLSchema-instance"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xsi:schemaLocation&lt;/span>&lt;span>="https://java.sun.com/xml/ns/javaee&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;&amp;nbsp;配置Struts2的主过滤器&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">filter&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">filter-name&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>struts2&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">filter-name&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">filter-class&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">filter-class&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">filter&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">filter-mapping&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">filter-name&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>struts2&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">filter-name&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">url-pattern&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>/*&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">url-pattern&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">filter-mapping&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">welcome-file-list&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">welcome-file&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>index.jsp&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">welcome-file&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">welcome-file-list&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">web-app&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>struts.xml&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;lt;!DOCTYPE&amp;nbsp;struts&amp;nbsp;PUBLIC&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"-//Apache&amp;nbsp;Software&amp;nbsp;Foundation//DTD&amp;nbsp;Struts&amp;nbsp;Configuration&amp;nbsp;2.3//EN"&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"https://struts.apache.org/dtds/struts-2.3.dtd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">struts&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置为开发模式&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">constant&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts.devMode"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"true"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置扩展名为action&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">constant&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts.action.extension"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"action"&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">package&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"default"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">namespace&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"/"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">extends&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts-default"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">package&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">struts&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>&lt;/div>&lt;h2>&lt;a name="t2">&lt;/a>二、搭建Hibernate开发环境：&lt;/h2>&lt;div>创建数据库：&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>这里只导入了项目中所需要的重要的jar包，以后根据业务要求继续导入相关的包。&lt;br>&lt;/div>&lt;div>工程目录：&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>hibernate.cfg.xml&lt;br>&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;lt;!DOCTYPE&amp;nbsp;hibernate-configuration&amp;nbsp;PUBLIC&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"-//Hibernate/Hibernate&amp;nbsp;Configuration&amp;nbsp;DTD&amp;nbsp;3.0//EN"&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">hibernate-configuration&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">session-factory&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置Hibernate:属性配置参考&amp;nbsp;&amp;nbsp;Hibernate发型包\project\etc\hibernate.properties&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;JDBC的基本链接&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"hibernate.connection.driver_class"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>com.mysql.jdbc.Driver&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"connection.username"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>root&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"connection.password"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>root&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"connection.url"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>jdbc:mysql://localhost:3306/xbmuoa&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置数据库方言&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"dialect"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>org.hibernate.dialect.MySQLDialect&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;根据映射产生表结构的类型:&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create-drop:木有表结构创建，下次启动时删除重新创建。适合学习阶段&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create：只做创建&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update：探测表结构够的变化，对于数据库没有的，进行更新操作。适合学习阶段&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;validate：对比与数据库的结构&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"hibernate.hbm2ddl.auto"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>update&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;显示sql语句及格式：开发调试阶段非常有用&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"hibernate.show_sql"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>true&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"hibernate.format_sql"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>true&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;告知映射文件&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">session-factory&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">hibernate-configuration&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>Person.hbm.xml（暂时性先写个映射文件的模板）&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;lt;!DOCTYPE&amp;nbsp;hibernate-mapping&amp;nbsp;PUBLIC&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"-//Hibernate/Hibernate&amp;nbsp;Mapping&amp;nbsp;DTD&amp;nbsp;3.0//EN"&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">hibernate-mapping&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">package&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"cn.xbmu.oa.domain"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">hibernate-mapping&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>&lt;/div>&lt;h2>&lt;a name="t3">&lt;/a>三、搭建Spring开发环境：&lt;/h2>&lt;div>这里只导入了项目中所需要的重要的jar包，以后根据业务要求继续导入相关的包。&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>applicationContext.xml&lt;br>&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">beans&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/beans"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xmlns:xsi&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.w3.org/2001/XMLSchema-instance"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns:context&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/context"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xmlns:tx&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/tx"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xsi:schemaLocation&lt;/span>&lt;span>="https://www.springframework.org/schema/beans&amp;nbsp;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;https://www.springframework.org/schema/context&amp;nbsp;http://www.springframework.org/schema/context/spring-context-2.5.xsd&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;https://www.springframework.org/schema/tx&amp;nbsp;http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;自动扫描与装配bean&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">context:component-scan&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">base-package&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"cn.xbmu.oa"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">context:component-scan&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">beans&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>&lt;strong>以上已经将Struts、Spring、Hibernate开发所需要的jar包及其配置文件已经配置到web工程中了。&lt;/strong>&lt;/div>&lt;div>&lt;strong>接下来，我们两两整合在一起。&lt;br>&lt;/strong>&lt;h2>&lt;a name="t4">&lt;/a>四、Spring与Hibernate整合：&lt;/h2>&lt;/div>&lt;div>&lt;span>让Spring来管理SessionFactory和事务。&lt;/span>&lt;/div>&lt;div>工程目录：&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>applicationContext.xml&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">beans&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/beans"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns:xsi&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.w3.org/2001/XMLSchema-instance"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">xmlns:context&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/context"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xmlns:tx&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"https://www.springframework.org/schema/tx"&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute">xsi:schemaLocation&lt;/span>&lt;span>="https://www.springframework.org/schema/beans&amp;nbsp;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;https://www.springframework.org/schema/context&amp;nbsp;http://www.springframework.org/schema/context/spring-context-2.5.xsd&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;https://www.springframework.org/schema/tx&amp;nbsp;http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;自动扫描与装配bean&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">context:component-scan&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">base-package&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"cn.xbmu.oa"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">context:component-scan&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;加载外部的properties配置文件&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">context:property-placeholder&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">location&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"classpath:jdbc.properties"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置数据库连接池（c3p0）&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">id&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"dataSource"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">class&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"com.mchange.v2.c3p0.ComboPooledDataSource"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;基本信息&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"jdbcUrl"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"${jdbcUrl}"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"driverClass"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"${driverClass}"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"user"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"${username}"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"password"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"${password}"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;其他配置&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--初始化时获取三个连接，取值应在minPoolSize与maxPoolSize之间。Default:&amp;nbsp;3&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"initialPoolSize"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"3"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--连接池中保留的最小连接数。Default:&amp;nbsp;3&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"minPoolSize"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"3"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--连接池中保留的最大连接数。Default:&amp;nbsp;15&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"maxPoolSize"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"5"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:&amp;nbsp;3&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"acquireIncrement"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"3"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0，则缓存被关闭。Default:&amp;nbsp;0&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"maxStatements"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"8"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default:&amp;nbsp;0&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"maxStatementsPerConnection"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"5"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default:&amp;nbsp;0&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"maxIdleTime"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1800"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置SessionFactory&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">id&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"sessionFactory"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">class&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"org.springframework.orm.hibernate3.LocalSessionFactoryBean"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"dataSource"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">ref&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"dataSource"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"configLocation"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"classpath:hibernate.cfg.xml"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置声明式的事务管理（采用基于注解的方式）&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">id&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"transactionManager"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">class&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"org.springframework.orm.hibernate3.HibernateTransactionManager"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"sessionFactory"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">ref&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"sessionFactory"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">bean&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">tx:annotation-driven&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">transaction-manager&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"transactionManager"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">beans&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>&lt;/div>&lt;div>&lt;pre>&lt;/pre>jdbc.properties&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_plain">&lt;div class="bar">&lt;div class="tools">&lt;b>[plain]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1">&lt;li class="alt">&lt;span>&lt;span>jdbcUrl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;jdbc:mysql:///xbmuoa&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>driverClass&amp;nbsp;=&amp;nbsp;com.mysql.jdbc.Driver&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>username&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;root&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;root&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>SpringTest.java&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_java">&lt;div class="bar">&lt;div class="tools">&lt;b>[java]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-j">&lt;li class="alt">&lt;span>&lt;span class="keyword">package&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.hibernate.SessionFactory;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.junit.Test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.context.ApplicationContext;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.context.support.ClassPathXmlApplicationContext;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">class&lt;/span>&lt;span>&amp;nbsp;SpringTest&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">private&lt;/span>&lt;span>&amp;nbsp;ApplicationContext&amp;nbsp;ac&amp;nbsp;=&amp;nbsp;&lt;/span>&lt;span class="keyword">new&lt;/span>&lt;span>&amp;nbsp;ClassPathXmlApplicationContext(&lt;/span>&lt;span class="string">"applicationContext.xml"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment">//测试SessionFactory&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Test&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;testSessionFactory(){&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionFactory&amp;nbsp;sessionFactory&amp;nbsp;=&amp;nbsp;(SessionFactory)&amp;nbsp;ac.getBean(&lt;span class="string">"sessionFactory"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(sessionFactory);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>使用Junit测试，结果：&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/div>&lt;div>启动tomcat没有报错，说明以上环境的搭建都完全正确，并进行测试，也没有报错。&lt;/div>&lt;div>User.java&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_java">&lt;div class="bar">&lt;div class="tools">&lt;b>[java]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-j">&lt;li class="alt">&lt;span>&lt;span class="keyword">package&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.domain;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">class&lt;/span>&lt;span>&amp;nbsp;User&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">private&lt;/span>&lt;span>&amp;nbsp;Long&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">private&lt;/span>&lt;span>&amp;nbsp;String&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;Long&amp;nbsp;getId()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">return&lt;/span>&lt;span>&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;setId(Long&amp;nbsp;id)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">this&lt;/span>&lt;span>.id&amp;nbsp;=&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;String&amp;nbsp;getName()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">return&lt;/span>&lt;span>&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;setName(String&amp;nbsp;name)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">this&lt;/span>&lt;span>.name&amp;nbsp;=&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>User.hbm.xml&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;lt;!DOCTYPE&amp;nbsp;hibernate-mapping&amp;nbsp;PUBLIC&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"-//Hibernate/Hibernate&amp;nbsp;Mapping&amp;nbsp;DTD&amp;nbsp;3.0//EN"&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">hibernate-mapping&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">package&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"cn.xbmu.oa.domain"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">class&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"User"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">id&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"id"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">generator&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">class&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"native"&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">id&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">property&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"name"&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">class&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">hibernate-mapping&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;/ol>&lt;/div>&lt;/div>&lt;div>记得在hibernate.cfg.xml文件中引入映射文件。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>TestService.java&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_java">&lt;div class="bar">&lt;div class="tools">&lt;b>[java]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-j">&lt;li class="alt">&lt;span>&lt;span class="keyword">package&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;javax.annotation.Resource;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.hibernate.SessionFactory;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.hibernate.classic.Session;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.stereotype.Service;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.transaction.annotation.Transactional;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.domain.User;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="annotation">@Service&lt;/span>&lt;span>(&lt;/span>&lt;span class="string">"testService"&lt;/span>&lt;span>)&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">class&lt;/span>&lt;span>&amp;nbsp;TestService&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Resource&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">private&lt;/span>&lt;span>&amp;nbsp;SessionFactory&amp;nbsp;sessionFactory;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Transactional&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;saveTwoUser(){&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Session&amp;nbsp;currentSession&amp;nbsp;=&amp;nbsp;sessionFactory.getCurrentSession();&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentSession.save(&lt;span class="keyword">new&lt;/span>&lt;span>&amp;nbsp;User());&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">int&lt;/span>&lt;span>&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;/span>&lt;span class="number">1&lt;/span>&lt;span>&amp;nbsp;/&amp;nbsp;&lt;/span>&lt;span class="number">0&lt;/span>&lt;span>;&lt;/span>&lt;span class="comment">//这里会抛出异常&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentSession.save(&lt;span class="keyword">new&lt;/span>&lt;span>&amp;nbsp;User());&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>SpringTest.java&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_java">&lt;div class="bar">&lt;div class="tools">&lt;b>[java]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-j">&lt;li class="alt">&lt;span>&lt;span class="keyword">package&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.hibernate.SessionFactory;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.junit.Test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.context.ApplicationContext;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;org.springframework.context.support.ClassPathXmlApplicationContext;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">class&lt;/span>&lt;span>&amp;nbsp;SpringTest&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">private&lt;/span>&lt;span>&amp;nbsp;ApplicationContext&amp;nbsp;ac&amp;nbsp;=&amp;nbsp;&lt;/span>&lt;span class="keyword">new&lt;/span>&lt;span>&amp;nbsp;ClassPathXmlApplicationContext(&lt;/span>&lt;span class="string">"applicationContext.xml"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment">//测试SessionFactory&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Test&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;testSessionFactory(){&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionFactory&amp;nbsp;sessionFactory&amp;nbsp;=&amp;nbsp;(SessionFactory)&amp;nbsp;ac.getBean(&lt;span class="string">"sessionFactory"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(sessionFactory);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment">//测试事务&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Test&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">void&lt;/span>&lt;span>&amp;nbsp;testTransaction(){&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestService&amp;nbsp;testService&amp;nbsp;=&amp;nbsp;(TestService)&amp;nbsp;ac.getBean(&lt;span class="string">"testService"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testService.saveTwoUser();&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>测试事务，报错，因为在 int i = 1 / 0这里发生了异常。&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>查询数据库xbmuoa中的表，没有数据&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;/div>&lt;div>我们注释掉 &amp;nbsp;int i = 1 / 0;这句代码，重新测试，成功。&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>查询user表，里面已经有了保存的数据&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>我们，继续打开抛异常的语句，再测试；再注释抛异常的代码，再测试。查看表中的数据，发现了事务回滚了。&lt;/div>&lt;div>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;/div>&lt;div>到此为止，我们顺利的将Spring与Hibernate整合在一起了。并测试了SessionFactory与事务，都正常。&lt;/div>&lt;h2>&lt;a name="t5">&lt;/a>五、Spring与Struts整合：&lt;/h2>&lt;div>为了说明白，我们在整合之前写个Action，整合之后写个Action，看看他们之间的区别：&lt;/div>&lt;h3>&lt;a name="t6">&lt;/a>整合之前：&lt;/h3>&lt;div>TestAction.java&lt;br>&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_java">&lt;div class="bar">&lt;div class="tools">&lt;b>[java]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-j">&lt;li class="alt">&lt;span>&lt;span class="keyword">package&lt;/span>&lt;span>&amp;nbsp;cn.xbmu.oa.test;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">import&lt;/span>&lt;span>&amp;nbsp;com.opensymphony.xwork2.ActionSupport;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="keyword">class&lt;/span>&lt;span>&amp;nbsp;TestAction&amp;nbsp;&lt;/span>&lt;span class="keyword">extends&lt;/span>&lt;span>&amp;nbsp;ActionSupport&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation">@Override&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">public&lt;/span>&lt;span>&amp;nbsp;String&amp;nbsp;execute()&amp;nbsp;&lt;/span>&lt;span class="keyword">throws&lt;/span>&lt;span>&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&lt;span class="string">"----------&amp;gt;TestAction&amp;nbsp;execute()"&lt;/span>&lt;span>);&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword">return&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="string">"success"&lt;/span>&lt;span>;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>}&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;/ol>&lt;/div>struts.xml&lt;/div>&lt;div>&lt;div class="dp-highlighter bg_html">&lt;div class="bar">&lt;div class="tools">&lt;b>[html]&lt;/b>&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="ViewSource" title="view plain">view plain&lt;/a>&lt;span class="tracking-ad" data-mod="popu_168">&amp;nbsp;&lt;a href="https://blog.csdn.net/btt2013/article/details/51051660#" class="CopyToClipboard" title="copy">copy&lt;/a>&lt;div>&lt;/div>&lt;/span>&lt;span class="tracking-ad" data-mod="popu_169">&lt;/span>&lt;/div>&lt;/div>&lt;ol start="1" class="dp-xml">&lt;li class="alt">&lt;span>&lt;span class="tag">&amp;lt;?&lt;/span>&lt;span class="tag-name">xml&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">version&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"1.0"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">encoding&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"UTF-8"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">?&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;lt;!DOCTYPE&amp;nbsp;struts&amp;nbsp;PUBLIC&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"-//Apache&amp;nbsp;Software&amp;nbsp;Foundation//DTD&amp;nbsp;Struts&amp;nbsp;Configuration&amp;nbsp;2.3//EN"&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"https://struts.apache.org/dtds/struts-2.3.dtd"&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/li>&lt;li class="">&lt;span>&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">struts&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置为开发模式&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">constant&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts.devMode"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"true"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;配置扩展名为action&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">constant&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts.action.extension"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">value&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"action"&lt;/span>&lt;span class="tag">/&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">package&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"default"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">namespace&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"/"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">extends&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"struts-default"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments">&amp;lt;!--&amp;nbsp;测试用的action&amp;nbsp;--&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="alt">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">action&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"test"&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">class&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"cn.xbmu.oa.test.TestAction"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/li>&lt;li class="">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag">&amp;lt;&lt;/span>&lt;span class="tag-name">result&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span class="attribute">name&lt;/span>&lt;span>=&lt;/span>&lt;span class="attribute-value">"success"&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>/test.jsp&lt;/span>&lt;span class="tag">&amp;lt;/&lt;/span>&lt;span class="tag-name">result&lt;/span>&lt;span class="tag">&amp;gt;&lt;/span>&lt;span>&amp;nbsp;</description></item></channel></rss>