<?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%A1%86%E6%9E%B6/</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%A1%86%E6%9E%B6/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><item><title>Java小技巧，从运行、控制到框架</title><link>https://pangyd.com/post/160-java/</link><pubDate>Wed, 08 Nov 2017 19:17:52 +0800</pubDate><guid>https://pangyd.com/post/160-java/</guid><description>&lt;p style="text-align: center">&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" data-size="657|493">&lt;/p>&lt;p style="text-align: start">&lt;span>1. JVM相关&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>JVM作为java运行的基础，很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候， JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题，但是可以佐证java开发能力的高低。&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>在JVM这个大类中，我认为需要掌握的知识有：&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>JVM内存模型和结构&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>GC原理，性能调优&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>调优：Thread Dump， 分析内存结构&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>class 二进制字节码结构， class loader 体系 ， class加载过程 ， 实例创建过程&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>方法执行过程&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>Java各个大版本更新提供的新特性(需要简单了解)&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>2. Java的运行（基础必备）&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>这个知识点是最最基本的java开发者需要掌握的，初学java，第一个肯定是教你如何在命令行中执行java程序，但是很多人一旦把java学完了，IDE用上了，就把这个都忘了。为什么强调要知道这个呢，知道了java最纯粹的启动方式之后，你才能在启动出问题的时候，去分析当时启动的目录多少，执行命名如何，参数如何，是否有缺失等。 这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>在这里需要掌握的知识有：&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>javac 编译java文件为 class 文件&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>java 命令的使用， 带package的java类如何在命令行中启动&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>java程序涉及到的各个路径(classpath， java。library。path， java运行的主目录等)&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>3. 数据类型&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>这条没有什么好多说的，无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识，包括装箱拆箱等，还要注意避免装箱之后的类型相等的判断&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>主要知识点：&lt;/span>&lt;/p>&lt;p style="text-align: start">&lt;span>基本类型： int， long， float， double， boolean ， 。。。&lt;/span>&lt;/p></description></item><item><title>Java小技巧，从运行、控制到框架</title><link>https://pangyd.com/post/157-java/</link><pubDate>Mon, 06 Nov 2017 18:19:27 +0800</pubDate><guid>https://pangyd.com/post/157-java/</guid><description>&lt;p style="text-align: center">&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" data-size="657|493">&lt;/p>&lt;p>&lt;span>1. JVM相关&lt;/span>&lt;/p>&lt;p>&lt;span>JVM作为java运行的基础，很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候， JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题，但是可以佐证java开发能力的高低。&lt;/span>&lt;/p>&lt;p>&lt;span>在JVM这个大类中，我认为需要掌握的知识有：&lt;/span>&lt;/p>&lt;p>&lt;span>JVM内存模型和结构&lt;/span>&lt;/p>&lt;p>&lt;span>GC原理，性能调优&lt;/span>&lt;/p>&lt;p>&lt;span>调优：Thread Dump， 分析内存结构&lt;/span>&lt;/p>&lt;p>&lt;span>class 二进制字节码结构， class loader 体系 ， class加载过程 ， 实例创建过程&lt;/span>&lt;/p>&lt;p>&lt;span>方法执行过程&lt;/span>&lt;/p>&lt;p>&lt;span>Java各个大版本更新提供的新特性(需要简单了解)&lt;/span>&lt;/p>&lt;p>&lt;span>2. Java的运行（基础必备）&lt;/span>&lt;/p>&lt;p>&lt;span>这个知识点是最最基本的java开发者需要掌握的，初学java，第一个肯定是教你如何在命令行中执行java程序，但是很多人一旦把java学完了，IDE用上了，就把这个都忘了。为什么强调要知道这个呢，知道了java最纯粹的启动方式之后，你才能在启动出问题的时候，去分析当时启动的目录多少，执行命名如何，参数如何，是否有缺失等。 这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。&lt;/span>&lt;/p>&lt;p>&lt;span>在这里需要掌握的知识有：&lt;/span>&lt;/p>&lt;p>&lt;span>javac 编译java文件为 class 文件&lt;/span>&lt;/p>&lt;p>&lt;span>java 命令的使用， 带package的java类如何在命令行中启动&lt;/span>&lt;/p>&lt;p>&lt;span>java程序涉及到的各个路径(classpath， java。library。path， java运行的主目录等)&lt;/span>&lt;/p>&lt;p>&lt;span>3. 数据类型&lt;/span>&lt;/p>&lt;p>&lt;span>这条没有什么好多说的，无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识，包括装箱拆箱等，还要注意避免装箱之后的类型相等的判断&lt;/span>&lt;/p>&lt;p>&lt;span>主要知识点：&lt;/span>&lt;/p>&lt;p>&lt;span>基本类型： int， long， float， double， boolean ， 。。。&lt;/span>&lt;/p>&lt;p>&lt;span>对应的对象类型： Integer 等类型到基本类型的转换， 装箱和拆箱&lt;/span>&lt;/p>&lt;p>&lt;span>Object类型： equals， hashcode&lt;/span>&lt;/p>&lt;p>&lt;span>String 类型的特点&lt;/span>&lt;/p>&lt;p>&lt;span>4. 对象和实例，对象的创建&lt;/span>&lt;/p>&lt;p>&lt;span>在这方面，开发者需要了解class和instance的概念以及之间的差别， 这是java面向对象特性的一个基础。主要知识点有：&lt;/span>&lt;/p>&lt;p>&lt;span>Class和 Instance 的概念&lt;/span>&lt;/p>&lt;p>&lt;span>Instance 创建的过程：&lt;/span>&lt;/p></description></item><item><title>GitHub 上最火的 Java 框架</title><link>https://pangyd.com/post/148-github-java/</link><pubDate>Sat, 28 Oct 2017 20:30:26 +0800</pubDate><guid>https://pangyd.com/post/148-github-java/</guid><description>&lt;p>&lt;span>Java 是目前最需要的编程语言之一。在这里，我们已经挖掘了一些关于框架趋势的有用信息，也就是最受开发者青睐的 Java 框架，名单如下&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;p>&lt;/p>&lt;/p>&lt;section data-role="outer" label="Powered by 135editor.com" style="text-align: start">&lt;section class="" data-tools="135编辑器" data-id="87856">&lt;section>&lt;section class="">1&lt;/section>&lt;section class="" data-bgless="lighten" data-brushtype="text" data-bglessp="20%">Spring MVC&lt;/section>&lt;/section>&lt;/section>&lt;p>&lt;span>&lt;a href="https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc" target="_blank" class="link link-normal">网页链接&lt;/a>&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>自从 10 多年前的第一次发布之后，SpringMVC 老当益壮，继续保持着领头羊的地位。在其完全拥抱 MVC 框架之后，Spring 不断的发展与变化着，转变成了一个功能全面的面向互联网应用程序的 Java 框架, 它能提供给软件工程师的是一个用于 Web 应用程序开发的强大工具集，以及针对安全项目的应用程序配置。具有如下特性：&lt;/span>&lt;/p>&lt;p>&lt;span>● 简单的 POJO 测试数据注入方式。&lt;/span>&lt;/p>&lt;p>&lt;span>● 增强过的模块化，因此拥有更好的代码可靠性。&lt;/span>&lt;/p>&lt;p>&lt;span>● 不同模块之间解耦和。&lt;/span>&lt;/p>&lt;p>&lt;span>● 能灵活运用的依赖注入（DI）。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;section class="" data-tools="135编辑器" data-id="87856">&lt;section>&lt;section class="">2&lt;/section>&lt;section class="" data-bgless="lighten" data-brushtype="text" data-bglessp="20%">Spring Boot&lt;/section>&lt;/section>&lt;/section>&lt;p>&lt;span>&lt;a href="https://github.com/spring-projects/spring-boot" target="_blank" class="link link-normal">网页链接&lt;/a>&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务。你可通过它来选择不同的 Spring 平台。可创建独立的 Java 应用和 Web 应用，同时提供了命令行工具来允许 'spring scripts'。Spring Boot 不生成代码，完全无需 XML 配置。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p></description></item></channel></rss>