上一篇是简单整合web和Spring, 这一篇是整合hibernate:

连接池c3p0: spring5.0, hibernate5.0

jars:

-----------------------------

web.xml,增加高亮部分,不然会报

Could not obtain transaction-synchronized Session for current thread

如果不加,则需要在用的时候显示声明式事务:并且改为opensession:

Session s = t.getSessionFactory().openSession();
s.beginTransaction();
int id = (int) s.save(u);
s.getTransaction().commit();

具体参考:https://blog.csdn.net/caiwenfeng_for_23/article/details/45242545

http://www.yihaomen.com/article/java/466.htm

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

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

<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.donghua.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/UserServlet</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>

-----------------------------------------------------application.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="userService" class="com.donghua.UserService">
<property name="name" value="Test Name"/>
</bean>

<!-- 一、配置数据库连接池 ComboPooledDataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<!-- Connection properties -->
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;databaseName=test2" />
<property name="user" value="sa" />
<property name="password" value="sapassword" />
<!-- Pool properties-->
<property name="minPoolSize" value="2" />
<property name="maxPoolSize" value="10" />
<property name="maxStatements" value="50" />
<property name="idleConnectionTestPeriod" value="3000" />
<property name="loginTimeout" value="300" />

</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"></property>
<property name="mappingResources">
<list>
<!-- 引入xxx.hbm.xml-->
<value>/META-INF/hbm/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props >
<!-- 配置hibernate的其他配置-->
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>

<bean id="userDao" class="com.donghua.UserDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>

---------------------UserSevlet

public class UserServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public UserServlet() {
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
WebApplicationContext con = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
UserService us = (UserService) con.getBean("userService");
response.getWriter().println(us.getName());
us.sayHello();
User u = new User("Allen"+System.currentTimeMillis(), 23);
UserDAO t = (UserDAO)con.getBean("userDao");
Session s = t.getSessionFactory().getCurrentSession();//若上面web.xml没有配置,此处应用opensession和声明式事务解决
int id = (int) s.save(u);

System.out.println(u);
User u2 = s.get(User.class, 29);
System.out.println(u2);
//User u3 = s.find(User.class, 1);
u = s.load(User.class, 29);
System.out.println(u);
}

}

----------------------user.hbm.xml

<hibernate-mapping package="com.donghua.model">
<class name="User" table="T_USER">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="name" column="NAME"/>
<property name="age" column="AGE"/>
</class>
<!-- CREATE TABLE T_USER(
ID int IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
NAME Varchar(40) NULL,
AGE INT NULL

PRIMARY KEY CLUSTERED
(
ID ASC
)
) -->

</hibernate-mapping>

浏览器输入则可以保存和查询User

web整合Spring和Hibernate的更多相关文章

  1. 整合spring和hibernate框架

    一)整合spring和hibernate框架整合要点:(1)数据源配置在Spring的配置文件中,供Spring和Hibernate框架共同使用:(2)不再需要hibernate.hbm.xml配置文 ...

  2. Java Web整合开发(20) -- Hibernate入门

    Spring与Hibernate整合

  3. 整合Spring与Hibernate

    在学习spring的时候,要整合hibernate,本来是看起来挺简单的,但是遇到的远要比想到了多,而且多很多,期间几天一个bug实在难调,几度放弃,但终究柳暗花明,抑制不住喜悦就想着分享一下成果吧. ...

  4. web整合Spring

    Spring整合Web开发 时间:2017-2-2 02:17 --导入jar包1.导入Spring开发基本jar包    spring-beans-3.2.0.RELEASE.jar     spr ...

  5. 声明式事务-整合Spring、Hibernate

    编程式事务:通过编码的方式,让事务处理的代码侵入到核心的业务代码中. 声明式事务:完成了事务处理的代码和业务核心代码的解耦合.提供事务处理代码的复用性和降低维护成本. 声明式事务:aop最典型的应用. ...

  6. 记录一下Maven整合spring,hibernate,strusts2我程序中出的bug

    action类如下 package com.itheima.movenweb.action; import java.util.List; import org.apache.struts2.Serv ...

  7. SSH开发实践part1:Spring与Hibernate整合

    1 之前把SSH看完了,现在从头开始进行项目实践.现在讲整个过程中的点滴记录下来,希望对后来者有参考. 2 SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller ...

  8. SSH框架之Spring+Struts2+Hibernate整合篇

    回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...

  9. Spring第九篇【Spring与Hibernate整合】

    前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...

随机推荐

  1. ES6 模块export import

    在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库, 和基于 CMD 规范的模块化库).ES6 引入了模块化,其设计思想是在编译时就能确定模 ...

  2. NestJS WebSocket 开始使用

    使用NestJs提供WebSocket服务. 本文会在新建项目的基础上增加2个类 Gateway 实现业务逻辑的地方 WebSocketAdapter WebSocket适配器 新建项目 新建一个项目 ...

  3. Linux服务系统申请SSL证书方法

    inux主要面向专业性较强的技术人员,如果是WEB站点通常采取PHP语言为主选,可选的服务器环境中有Apache.Nginx.Tomcat这几类为主的框架环境,有的图方便会用一些可视化一键式的控制面板 ...

  4. windows 查看端口号,关闭端口进程

    1.打开cmd,输入:netstat -ano | findstr 8080,根据端口号查找对应的PID.结果如下: 2.根据PID找进程名称,输入命令:tasklist | findstr 1789 ...

  5. SpringBoot: 后台接口文档 - 基于Swagger3

    目录 前言:什么是Swagger 起步:(只需简单的3步) 加载依赖 添加注解@EnableOpenApi 启动SpringBoot,访问Swagger后台界面 配置:基于Java的配置 注解:Swa ...

  6. python使用正则+jsonpath处理接口依赖

    1.接口2的入参值依赖接口1的响应结果,如接口2的入参ids需要拿到接口1响应结果的id字段值,测试用例写在excel中,参数:{"ids":"${$..id}$&quo ...

  7. Supervisord 远程命令执行漏洞(CVE-2017-11610)

    漏洞影响范围: Supervisor version 3.1.2至Supervisor version 3.3.2 poc 地址.https://github.com/vulhub/vulhub/tr ...

  8. Typhoon靶机

    仅供个人娱乐 靶机信息 靶机下载地址:https://www.vulnhub.com/entry/typhoon-102,267/ 一.主机探测 arp-scan -l nmap -sV -p- -A ...

  9. Pytorch Torchvision Transform

    Torchvision.Transforms Transforms包含常用图像转换操作.可以使用Compose将它们链接在一起. 此外,还有torchvision.transforms.functio ...

  10. Java互联网架构师系统进阶课程学习 (3)【享学】

    3.原子操作CAS Atom(不可分割) 什么是原子操作?如何实现原子操作? syn基于阻塞的锁的机制,1.被阻塞的线程优先级很高,2.拿到锁的线程一直不释放锁怎么办?3.大量的竞争,消耗cpu,同时 ...